diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-23 22:44:02 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-23 22:44:02 +1000 |
commit | 0aee45a1174cecca6ed4bd703ef6299185fec6b8 (patch) | |
tree | e0c7d3723406fc96e6091a28df60f490efb504e1 /source/game/StarRoot.cpp | |
parent | 121d27446b42c960014b2e69999dad73322b05f3 (diff) |
Cache certain item generation calls from interfaces
Helps a little with the lag from recipes when having crafting interfaces open, but it's still noticeable.
Also micro-optimized Root maintenance by unlocking the Root mutexes for their respective shared_ptrs earlier once we have our own shared_ptr.
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(); |