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

Jens-Michael Hoffmann jensmh at gmx.de
Wed May 5 15:28:10 CEST 2010


SVN commit 1123161 by jmhoffmann:

Make "Download Region" usable on system without lots of RAM and fast CPU.

It is not necessarry to create tile objects in memory with scaling of
lower level tiles etc. when tiles are not needed for display.

 M  +1 -1      MarbleModel.cpp  
 M  +13 -0     StackedTileLoader.cpp  
 M  +1 -1      StackedTileLoader.h  
 M  +5 -0      TileLoader.cpp  
 M  +1 -0      TileLoader.h  


--- trunk/KDE/kdeedu/marble/src/lib/MarbleModel.cpp #1123160:1123161
@@ -943,7 +943,7 @@
         for ( int x = x1; x <= x2; ++x )
             for ( int y = y1; y <= y2; ++y ) {
                 TileId const tileId( mapThemeId, level, x, y );
-                d->m_tileLoader->reloadTile( tileId, DownloadBulk );
+                d->m_tileLoader->downloadTile( tileId );
             }
     }
     int const elapsedMs = t.elapsed();
--- trunk/KDE/kdeedu/marble/src/lib/StackedTileLoader.cpp #1123160:1123161
@@ -287,6 +287,19 @@
     return stackedTile;
 }
 
+void StackedTileLoader::downloadTile( TileId const & stackedTileId )
+{
+    QVector<GeoSceneTexture const *> const textureLayers = findRelevantTextureLayers( stackedTileId );
+    QVector<GeoSceneTexture const *>::const_iterator pos = textureLayers.constBegin();
+    QVector<GeoSceneTexture const *>::const_iterator const end = textureLayers.constEnd();
+    for (; pos != end; ++pos ) {
+        GeoSceneTexture const * const textureLayer = *pos;
+        TileId const tileId( textureLayer->sourceDir(), stackedTileId.zoomLevel(),
+                             stackedTileId.x(), stackedTileId.y() );
+        d->m_tileLoader->downloadTile( tileId );
+    }
+}
+
 quint64 StackedTileLoader::volatileCacheLimit() const
 {
     return d->m_tileCache.maxCost() / 1024;
--- trunk/KDE/kdeedu/marble/src/lib/StackedTileLoader.h #1123160:1123161
@@ -88,8 +88,8 @@
          */
         StackedTile* loadTile( TileId const &stackedTileId, DownloadUsage const,
                                bool const forMergedLayerDecorator = false );
-
         StackedTile* reloadTile( TileId const & stackedTileId, DownloadUsage const );
+        void downloadTile( TileId const & stackedTileId );
 
         /**
          * Resets the internal tile hash.
--- trunk/KDE/kdeedu/marble/src/lib/TileLoader.cpp #1123160:1123161
@@ -145,6 +145,11 @@
     triggerDownload( tile->id(), usage );
 }
 
+void TileLoader::downloadTile( TileId const & tileId )
+{
+    triggerDownload( tileId, DownloadBulk );
+}
+
 void TileLoader::updateTile( QByteArray const & data, QString const & tileId )
 {
     TileId const id = TileId::fromString( tileId );
--- trunk/KDE/kdeedu/marble/src/lib/TileLoader.h #1123160:1123161
@@ -47,6 +47,7 @@
     QSharedPointer<TextureTile> reloadTile( TileId const & stackedTileId, TileId const & tileId,
                                             DownloadUsage const );
     void reloadTile( QSharedPointer<TextureTile> const & tile, DownloadUsage const );
+    void downloadTile( TileId const & tileId );
 
     void setTextureLayers( QHash<uint, GeoSceneTexture*> const & );
 


More information about the Marble-commits mailing list