From 7df6f6c9865ccb5c3b35b1717673e5eae33fec09 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Thu, 8 Aug 2024 12:11:02 +0800 Subject: [PATCH] FIX: is_ams_need_update for vt slots Change-Id: Iddf3aa9da6c0c4b434d91439828ec0223ecea9d5 Jira: STUDIO-7822 --- src/slic3r/GUI/DeviceManager.cpp | 6 ++++++ src/slic3r/GUI/DeviceManager.hpp | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index fa8b1554f..97c6bc077 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -4289,18 +4289,22 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) if (vslot.id == std::to_string(VIRTUAL_TRAY_MAIN_ID)) { auto it = std::next(vt_slot.begin(), 0); if (it != vt_slot.end()) { + is_ams_need_update |= vt_slot[0] != vslot; vt_slot[0] = vslot; } else { + is_ams_need_update = true; vt_slot.push_back(vslot); } } else if (vslot.id == std::to_string(VIRTUAL_TRAY_DEPUTY_ID)) { auto it = std::next(vt_slot.begin(), 1); if (it != vt_slot.end()) { + is_ams_need_update |= vt_slot[1] != vslot; vt_slot[1] = vslot; } else { + is_ams_need_update = true; vt_slot.push_back(vslot); } } @@ -4314,9 +4318,11 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) auto it = std::next(vt_slot.begin(), 0); if (it != vt_slot.end()) { + is_ams_need_update |= vt_slot[0] != main_slot; vt_slot[0] = main_slot; } else { + is_ams_need_update = true; vt_slot.push_back(main_slot); } } diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index cf4cca20f..8a7eafb87 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -211,6 +211,12 @@ public: return wxColour(ret[0], ret[1], ret[2], ret[3]); } + bool operator==(AmsTray const &o) const + { + return id == o.id && type == o.type && filament_setting_id == o.filament_setting_id && color == o.color; + } + bool operator!=(AmsTray const &o) const { return !operator==(o); } + std::string id; std::string tag_uid; // tag_uid std::string setting_id; // tray_info_idx