Просмотр исходного кода

fix deadlock, gui api and wrong uiml attributes

Kolja Strohm 4 месяцев назад
Родитель
Сommit
fa83601d77

+ 6 - 1
FactoryCraft/Game.cpp

@@ -206,7 +206,12 @@ void Game::api(char* data)
             id[idLen] = 0;
             NetworkAPIProcessor* processor = dynamic_cast<NetworkAPIProcessor*>(
                 guiView->zZeichnungById(id));
-            if (processor) processor->api(data + 3 + idLen);
+            int processorId = *(int*)(data + 3 + idLen);
+            if (processor
+                && (processorId == -1 || processorId == processor->getId()))
+            {
+                processor->api(data + 7 + idLen);
+            }
             delete[] id;
             break;
         }

+ 2 - 2
FactoryCraft/UIMLCraftingProgress.cpp

@@ -22,8 +22,8 @@ Framework::Zeichnung* UIMLCraftingProgressElement::parseElement(
         element.getAttributeValue("target"), addressLength);
     UIMLProgressAndStateView* view
         = new UIMLProgressAndStateView(element.getAttributeValue("id"),
-            element.getAttributeValue("background"),
-            element.getAttributeValue("foreground"),
+            element.getAttributeValue("backgroundImagePath"),
+            element.getAttributeValue("foregroundImagePath"),
             address,
             addressLength,
             1,

+ 2 - 2
FactoryCraft/UIMLFuelState.cpp

@@ -21,8 +21,8 @@ Framework::Zeichnung* UIMLFuelStateElement::parseElement(
         element.getAttributeValue("target"), addressLength);
     UIMLProgressAndStateView* view
         = new UIMLProgressAndStateView(element.getAttributeValue("id"),
-            element.getAttributeValue("background"),
-            element.getAttributeValue("foreground"),
+            element.getAttributeValue("backgroundImagePath"),
+            element.getAttributeValue("foregroundImagePath"),
             address,
             addressLength,
             0,

+ 2 - 0
FactoryCraft/UIMLProgressAndStateView.cpp

@@ -78,6 +78,7 @@ void UIMLProgressAndStateView::api(char* message)
 {
     max = *(int*)message;
     current = *(int*)(message + 4);
+    uiFactory.initParam.bildschirm->lock();
     lockZeichnung();
     Framework::Text toolTipText;
     toolTipText.append() << toolTipPrefix.getText() << current << " / " << max
@@ -108,6 +109,7 @@ void UIMLProgressAndStateView::api(char* message)
     toolTip->setRender();
     rend = 1;
     unlockZeichnung();
+    uiFactory.initParam.bildschirm->unlock();
 }
 
 void UIMLProgressAndStateView::render(Framework::Bild& rObj)