/** * This idle function allows progressive scanning of visibility etc */ bool GlueMapWindow::Idle() { bool still_dirty; bool topography_dirty = true; /* scan topography in every Idle() call */ bool terrain_dirty = true; bool weather_dirty = true; // StartTimer(); do { idle_robin = (idle_robin + 1) % 3; switch (idle_robin) { case 0: topography_dirty = UpdateTopography(1) > 0; break; case 1: terrain_dirty = UpdateTerrain(); break; case 2: weather_dirty = UpdateWeather(); break; } still_dirty = terrain_dirty || topography_dirty || weather_dirty; } while (RenderTimeAvailable() && #ifndef ENABLE_OPENGL !draw_thread->IsTriggered() && #endif still_dirty); return still_dirty; }
/** * This idle function allows progressive scanning of visibility etc */ bool GlueMapWindow::Idle() { bool still_dirty=false; bool topology_dirty = true; /* scan topology in every Idle() call */ bool terrain_dirty = true; bool weather_dirty = true; // StartTimer(); do { idle_robin = (idle_robin + 1) % 3; switch (idle_robin) { case 0: UpdateTopology(); topology_dirty = false; break; case 1: UpdateTerrain(); terrain_dirty = false; break; case 2: UpdateWeather(); weather_dirty = false; break; } } while (RenderTimeAvailable() && !draw_thread->is_triggered() && (still_dirty = terrain_dirty || topology_dirty || weather_dirty)); return still_dirty; }
void MapWindow::UpdateCaches(bool force) { // map was dirtied while we were drawing, so skip slow process // (unless we haven't done it for 2000 ms) #if RASTERCACHE DWORD fpsTimeThis; static DWORD fpsTimeMapCenter = 0; #endif if (MapWindow::ForceVisibilityScan) { force = true; MapWindow::ForceVisibilityScan = false; } // have some time, do shape file cache update if necessary LockTerrainDataGraphics(); SetTopologyBounds(MapRect, force); UnlockTerrainDataGraphics(); #if RASTERCACHE // JP2 no more supported, however if rastercache will ever be enabled.. // Must do this even if terrain is not displayed, because // raster terrain is used by terrain footprint etc. fpsTimeThis = ::GetTickCount(); // 100115 if (force || ( (fpsTimeThis - fpsTimeMapCenter) > 5000)) { fpsTimeMapCenter=fpsTimeThis; RasterTerrain::ServiceTerrainCenter(DrawInfo.Latitude, DrawInfo.Longitude); } fpsTimeThis = ::GetTickCount(); static DWORD fpsTimeLast_terrain=0; if (EnableTerrain) { if (RenderTimeAvailable() || ((fpsTimeThis-fpsTimeLast_terrain)>5000) || force) { fpsTimeLast_terrain = fpsTimeThis; RasterTerrain::ServiceCache(); } } #endif // RASTERCACHE }