Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarRoot.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/StarRoot.cpp')
-rw-r--r--source/game/StarRoot.cpp31
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();