diff options
Diffstat (limited to 'source/game/StarRoot.cpp')
-rw-r--r-- | source/game/StarRoot.cpp | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/source/game/StarRoot.cpp b/source/game/StarRoot.cpp index df2fc98..5adbd0c 100644 --- a/source/game/StarRoot.cpp +++ b/source/game/StarRoot.cpp @@ -106,23 +106,38 @@ Root::Root(Settings settings) { { MutexLocker locker(m_objectDatabaseMutex); - if (m_objectDatabase) - m_objectDatabase->cleanup(); + if (ObjectDatabasePtr objectDb = m_objectDatabase) { + locker.unlock(); + objectDb->cleanup(); + } + } + { + MutexLocker locker(m_itemDatabaseMutex); + if (ItemDatabasePtr itemDb = m_itemDatabase) { + locker.unlock(); + itemDb->cleanup(); + } } { MutexLocker locker(m_monsterDatabaseMutex); - if (m_monsterDatabase) - m_monsterDatabase->cleanup(); + if (MonsterDatabasePtr monsterDb = m_monsterDatabase) { + locker.unlock(); + monsterDb->cleanup(); + } } { MutexLocker locker(m_assetsMutex); - if (m_assets) - m_assets->cleanup(); + if (AssetsPtr assets = m_assets) { + locker.unlock(); + assets->cleanup(); + } } { MutexLocker locker(m_tenantDatabaseMutex); - if (m_tenantDatabase) - m_tenantDatabase->cleanup(); + if (TenantDatabasePtr tenantDb = m_tenantDatabase) { + locker.unlock(); + tenantDb->cleanup(); + } } Random::addEntropy(); |