FIX: do something on machine lost

jira: [STUDIO-11324]
Change-Id: I915ebe84dfad00910df01e7f289109c602b02c1b
(cherry picked from commit 6c4757505ac338eb8e995aacaf1d049957044725)
This commit is contained in:
xin.zhang
2025-04-03 16:42:46 +08:00
committed by Noisyfox
parent 6494c35626
commit 7ed9710277
2 changed files with 20 additions and 0 deletions

View File

@@ -6888,6 +6888,10 @@ void DeviceManager::on_machine_alive(std::string json_str)
it->second->dev_connection_type != connect_type ||
it->second->bind_ssdp_version != ssdp_version)
{
if (it->second->bind_state != bind_state) {
OnMachineBindStateChanged(it->second, bind_state);
}
it->second->dev_ip = dev_ip;
it->second->bind_state = bind_state;
it->second->bind_sec_link = sec_link;
@@ -7664,6 +7668,18 @@ std::string DeviceManager::get_filament_name_from_ams(int ams_id, int slot_id)
return name;
}
void DeviceManager::OnMachineBindStateChanged(MachineObject *obj, const std::string &new_state) {
if (!obj) { return; }
if (obj->dev_id == selected_machine) {
if (new_state == "free") { OnSelectedMachineLost();}
}
}
void DeviceManager::OnSelectedMachineLost() {
GUI::wxGetApp().sidebar().update_sync_status(nullptr);
GUI::wxGetApp().sidebar().load_ams_list(string(), nullptr);
}
bool DeviceManager::check_filaments_printable(const std::string &tag_vendor, const std::string &tag_type, int ams_id, bool &in_blacklist, std::string &ac, std::string &info)
{
DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager();

View File

@@ -1485,6 +1485,10 @@ public:
static bool is_virtual_slot(int ams_id);
static std::string get_filament_name_from_ams(int ams_id, int slot_id);
static void update_local_machine(const MachineObject& m);
private:
void OnMachineBindStateChanged(MachineObject* obj, const std::string &new_state);
void OnSelectedMachineLost();
};
class DeviceManagerRefresher : public wxObject