From 2c490d42292fe2214aca27109740409eb02e1d39 Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Sun, 15 Jul 2012 20:07:38 +0000 Subject: World threads are stopped before the plugin mgr for clean exit (FS #228) git-svn-id: http://mc-server.googlecode.com/svn/trunk@669 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cRoot.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'source/cRoot.cpp') diff --git a/source/cRoot.cpp b/source/cRoot.cpp index 9ab923d50..ef234044f 100644 --- a/source/cRoot.cpp +++ b/source/cRoot.cpp @@ -162,6 +162,8 @@ void cRoot::Start() // Deallocate stuffs LOG("Shutting down server..."); m_Server->Shutdown(); // This waits for threads to stop and d/c clients + LOG("Stopping world threads..."); + StopWorlds(); LOG("Stopping authenticator..."); m_Authenticator.Stop(); LOG("Stopping plugin manager..."); @@ -253,6 +255,18 @@ void cRoot::StartWorlds(void) +void cRoot::StopWorlds(void) +{ + for( WorldMap::iterator itr = m_pState->WorldsByName.begin(); itr != m_pState->WorldsByName.end(); ++itr ) + { + itr->second->StopThreads(); + } +} + + + + + void cRoot::UnloadWorlds(void) { for( WorldMap::iterator itr = m_pState->WorldsByName.begin(); itr != m_pState->WorldsByName.end(); ++itr ) -- cgit v1.2.3