aboutsummaryrefslogtreecommitdiff
path: root/src/game/MapManager.cpp
diff options
context:
space:
mode:
authormaximius <none@none>2009-10-30 22:52:37 -0700
committermaximius <none@none>2009-10-30 22:52:37 -0700
commit73fd6dbba634535feb4539f8ad768b1db27a17b3 (patch)
tree3bb972490c8ef9dd1e8cf67aafa0a884933147f8 /src/game/MapManager.cpp
parent22f349d2b50d8606aebc5468a8186c1287901585 (diff)
*Make mtmaps a bit more stable, particularly when it updates players.
*Do some better cleanup on spec switching (should no longer strip away all auras, forcing a relog), unsummon totems, clear combo points, etc. *Cleanup and optimization. --HG-- branch : trunk
Diffstat (limited to 'src/game/MapManager.cpp')
-rw-r--r--src/game/MapManager.cpp22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/game/MapManager.cpp b/src/game/MapManager.cpp
index 7947c8d0089..68953556aa0 100644
--- a/src/game/MapManager.cpp
+++ b/src/game/MapManager.cpp
@@ -295,22 +295,22 @@ void
MapManager::Update(uint32 diff)
{
i_timer.Update(diff);
- if( !i_timer.Passed() )
+ if (!i_timer.Passed())
return;
+ MapMapType::iterator iter = i_maps.begin();
#ifdef MULTI_THREAD_MAP
- uint32 i=0;
- MapMapType::iterator iter;
+ uint32 i;
std::vector<Map*> update_queue(i_maps.size());
int omp_set_num_threads(sWorld.getConfig(CONFIG_NUMTHREADS));
- for (iter = i_maps.begin(), i=0; iter != i_maps.end(); ++iter, i++)
- update_queue[i]=iter->second;
+ for (i = 0; iter != i_maps.end(); ++iter, ++i)
+ update_queue[i] = iter->second;
/*
gomp in gcc <4.4 version cannot parallelise loops using random access iterators
so until gcc 4.4 isnt standard, we need the update_queue workaround
*/
#pragma omp parallel for schedule(dynamic) private(i) shared(update_queue)
- for (int32 i = 0; i < i_maps.size(); ++i)
+ for (; i > 0; --i)
{
checkAndCorrectGridStatesArray(); // debugging code, should be deleted some day
update_queue[i]->Update(i_timer.GetCurrent());
@@ -318,7 +318,7 @@ MapManager::Update(uint32 diff)
// sLog.outError("This is thread %d out of %d threads,updating map %u",omp_get_thread_num(),omp_get_num_threads(),iter->second->GetId());
}
#else
- for (MapMapType::iterator iter=i_maps.begin(); iter != i_maps.end(); ++iter)
+ for (MapMapType::iterator iter = i_maps.begin(); iter != i_maps.end(); ++iter)
{
iter->second->Update(i_timer.GetCurrent());
sWorld.RecordTimeDiff("UpdateMap %u", iter->second->GetId());
@@ -340,17 +340,15 @@ MapManager::Update(uint32 diff)
void MapManager::DoDelayedMovesAndRemoves()
{
/*
- int i =0;
std::vector<Map*> update_queue(i_maps.size());
- MapMapType::iterator iter;
- for (iter = i_maps.begin(); iter != i_maps.end(); ++iter, i++)
+ for (MapMapType::iterator iter = i_maps.begin(), uint32 i = 0; iter != i_maps.end(); ++iter, ++i)
update_queue[i] = iter->second;
omp_set_num_threads(sWorld.getConfig(CONFIG_NUMTHREADS));
#pragma omp parallel for schedule(dynamic) private(i) shared(update_queue)
- for (i=0; i<i_maps.size(); i++)
- update_queue[i]->DoDelayedMovesAndRemoves();
+ for (uint32 i = 0; i < i_maps.size(); ++i)
+ update_queue[i]->DoDelayedMovesAndRemoves();
*/
}