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

summaryrefslogtreecommitdiff
path: root/source/game/StarWorldClient.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-11-25 23:36:36 +1100
committerKae <80987908+Novaenia@users.noreply.github.com>2023-11-25 23:36:36 +1100
commit8181cff72e7f79296548eb75000746cae34bf032 (patch)
treeaf73f921eb3d7ab67a4adf3f0019dbc9547044e4 /source/game/StarWorldClient.cpp
parentf3c7bd1d5e5b4d890ea11f4ee1bff3a978a40103 (diff)
Hopefully fix the rare lightmap flicker
Diffstat (limited to 'source/game/StarWorldClient.cpp')
-rw-r--r--source/game/StarWorldClient.cpp12
1 files changed, 4 insertions, 8 deletions
diff --git a/source/game/StarWorldClient.cpp b/source/game/StarWorldClient.cpp
index 470ff42..b2a79fb 100644
--- a/source/game/StarWorldClient.cpp
+++ b/source/game/StarWorldClient.cpp
@@ -1403,7 +1403,7 @@ void WorldClient::collectLiquid(List<Vec2I> const& tilePositions, LiquidId liqui
}
void WorldClient::waitForLighting(Image* out) {
- MutexLocker lock(m_lightingMutex);
+ MutexLocker lock(m_lightMapMutex);
if (out)
*out = move(m_lightMap);
}
@@ -1648,22 +1648,18 @@ void WorldClient::lightingTileGather() {
}
void WorldClient::lightingMain() {
+ MutexLocker condLocker(m_lightingMutex);
while (true) {
- MutexLocker locker(m_lightingMutex);
-
m_lightingCond.wait(m_lightingMutex);
if (m_stopLightingThread)
return;
+ MutexLocker mapLocker(m_lightMapMutex);
int64_t start = Time::monotonicMicroseconds();
lightingTileGather();
m_lightingCalculator.calculate(m_lightMap);
+ mapLocker.unlock();
LogMap::set("client_render_world_async_light_calc", strf(u8"{:05d}\u00b5s", Time::monotonicMicroseconds() - start));
-
- continue;
-
- locker.unlock();
- Thread::yield();
}
}