From 3c30ab28070d206585047640d0c293912208e37d Mon Sep 17 00:00:00 2001
From: Perttu Ahola <celeron55@gmail.com>
Date: Tue, 6 Sep 2011 19:16:36 +0300
Subject: [PATCH] Speed up periodical map unloading by moving beginSave() and
 endSave() to outer loop in Map::timerUpdate()

---
 src/map.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/map.cpp b/src/map.cpp
index 5e2fd558c..423a07dcd 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -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);
-- 
GitLab