Răsfoiți Sursa

fix deadlock of entity tick thread with client api call processing thread

Kolja Strohm 1 lună în urmă
părinte
comite
09e2efddc9
1 a modificat fișierele cu 3 adăugiri și 2 ștergeri
  1. 3 2
      FactoryCraft/InformationObserver.cpp

+ 3 - 2
FactoryCraft/InformationObserver.cpp

@@ -48,14 +48,15 @@ bool InformationObserver::sendMessage(NetworkMessage* message)
 
 void InformationObserver::setReady()
 {
+    Entity* e = Game::INSTANCE->zEntity(entityId);
     cs.lock();
     ready = 1;
-    Entity* e = Game::INSTANCE->zEntity(entityId);
     if (e)
     {
         for (NetworkMessage* msg : waitingMessages)
         {
-            Game::INSTANCE->sendMessage(dynamic_cast<NetworkMessage*>(msg->getThis()), e);
+            Game::INSTANCE->sendMessage(
+                dynamic_cast<NetworkMessage*>(msg->getThis()), e);
         }
     }
     waitingMessages.leeren();