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

summaryrefslogtreecommitdiff
path: root/source/game/StarRoot.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-07-23 22:44:02 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-07-23 22:44:02 +1000
commit0aee45a1174cecca6ed4bd703ef6299185fec6b8 (patch)
treee0c7d3723406fc96e6091a28df60f490efb504e1 /source/game/StarRoot.cpp
parent121d27446b42c960014b2e69999dad73322b05f3 (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.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();