Speed up periodical map unloading by moving beginSave() and endSave() to outer loop...
authorPerttu Ahola <celeron55@gmail.com>
Tue, 6 Sep 2011 16:16:36 +0000 (19:16 +0300)
committerPerttu Ahola <celeron55@gmail.com>
Tue, 6 Sep 2011 16:16:36 +0000 (19:16 +0300)
src/map.cpp

index 5e2fd558c2756704c7ba3f9c8dd45a026032d95b..423a07dcdc61394b4600aa136af40bcfe2c6a757 100644 (file)
@@ -1408,6 +1408,7 @@ void Map::timerUpdate(float dtime, float unload_timeout,
 
        core::map<v2s16, MapSector*>::Iterator si;
 
+       beginSave();
        si = m_sectors.getIterator();
        for(; si.atEnd() == false; si++)
        {
@@ -1418,7 +1419,6 @@ void Map::timerUpdate(float dtime, float unload_timeout,
                core::list<MapBlock*> blocks;
                sector->getBlocks(blocks);
                
-               beginSave();
                for(core::list<MapBlock*>::Iterator i = blocks.begin();
                                i != blocks.end(); i++)
                {
@@ -1451,13 +1451,13 @@ void Map::timerUpdate(float dtime, float unload_timeout,
                                all_blocks_deleted = false;
                        }
                }
-               endSave();
 
                if(all_blocks_deleted)
                {
                        sector_deletion_queue.push_back(si.getNode()->getKey());
                }
        }
+       endSave();
        
        // Finally delete the empty sectors
        deleteSectors(sector_deletion_queue);