[Marble-commits] KDE/kdeedu/marble/src/lib

Jens-Michael Hoffmann jensmh at gmx.de
Mon Mar 29 00:27:27 CEST 2010


SVN commit 1108444 by jmhoffmann:

Do not discard updates for cached but currently not displayed tiles.

This should improve map browsing as updated tiles stay in the cache for
fast access and do not need to be reloaded from the filesystem.

 M  +14 -8     StackedTileLoader.cpp  


--- trunk/KDE/kdeedu/marble/src/lib/StackedTileLoader.cpp #1108443:1108444
@@ -342,15 +342,21 @@
 
 void StackedTileLoader::updateTile( TileId const & stackedTileId, TileId const & tileId )
 {
-    StackedTile * const tile = d->m_tilesOnDisplay.value( stackedTileId, 0 );
-    if ( tile ) {
-        tile->deriveCompletionState();
-        tile->initResultTile();
-        mergeDecorations( tile, findTextureLayer( stackedTileId ));
+    StackedTile * const displayedTile = d->m_tilesOnDisplay.value( stackedTileId, 0 );
+    if ( displayedTile ) {
+        displayedTile->deriveCompletionState();
+        displayedTile->initResultTile();
+        mergeDecorations( displayedTile, findTextureLayer( stackedTileId ));
         emit tileUpdateAvailable();
-    } else
-        // TODO: also update tiles in the cache, not doing it is really a waste of i/o
-        d->m_tileCache.remove( stackedTileId );
+    }
+    else {
+        StackedTile * const cachedTile = d->m_tileCache.object( stackedTileId );
+        if ( cachedTile ) {
+            cachedTile->deriveCompletionState();
+            cachedTile->initResultTile();
+            mergeDecorations( cachedTile, findTextureLayer( stackedTileId ));
+        }
+    }
 }
 
 void StackedTileLoader::update()


More information about the Marble-commits mailing list