chenluhua1980
2026-01-09 570e812442a64360239f558ae4b55c0d204a5523
SourceCode/Bond/Servo/CMaster.cpp
@@ -1540,7 +1540,7 @@
            unlock();
         }
      };
      listener.onProcessStateChanged = [&](void* pEquipment, int slotNo, PROCESS_STATE state) -> void {
      listener.onProcessStateChanged = [&](void* pEquipment, int slotNo, PROCESS_STATE prevState, PROCESS_STATE state) -> void {
         ASSERT(1 <= slotNo && slotNo <= 8);
         int eqid = ((CEquipment*)pEquipment)->getID();
         CGlass* pGlass = ((CEquipment*)pEquipment)->getGlassFromSlot(slotNo);
@@ -1558,7 +1558,7 @@
         }
         if (m_listener.onProcessStateChanged != nullptr) {
            m_listener.onProcessStateChanged(this, (CEquipment*)pEquipment, slotNo, state);
            m_listener.onProcessStateChanged(this, (CEquipment*)pEquipment, slotNo, prevState, state);
         }
      };
      listener.onMapMismatch = [&](void* pEquipment, short scanMap, short downMap) {
@@ -2115,8 +2115,9 @@
               }
            };
            auto fireProcessState = [&](SERVO::CEquipment* pEq, int slotNo, SERVO::PROCESS_STATE st) {
               if (m_listener.onProcessStateChanged != nullptr && pEq != nullptr) {
                  m_listener.onProcessStateChanged(this, pEq, slotNo, st);
               // Drive equipment state so listeners receive prev/current states consistently.
               if (pEq != nullptr) {
                  pEq->fireSetProcessState(slotNo, st);
               }
            };