From 5ac6bf0ccb456beaae7960facb58537327c2fa4a Mon Sep 17 00:00:00 2001 From: QIDI TECH <893239786@qq.com> Date: Sat, 10 May 2025 13:12:11 +0800 Subject: [PATCH] fix some bug --- src/slic3r/GUI/SendMultiMachinePage.cpp | 22 +++++++++++++++++----- src/slic3r/GUI/SendMultiMachinePage.hpp | 1 + 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/SendMultiMachinePage.cpp b/src/slic3r/GUI/SendMultiMachinePage.cpp index b511e60..0a2f079 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.cpp +++ b/src/slic3r/GUI/SendMultiMachinePage.cpp @@ -374,8 +374,11 @@ void SendMultiMachinePage::on_sys_color_changed() void SendMultiMachinePage::refresh_user_device() { - sizer_machine_list->Clear(true); + m_pauseThread = true; + std::lock_guard lock(m_mutex); + m_device_items.clear(); + sizer_machine_list->Clear(true); SelectedItems.clear(); unSelectedItems.clear(); @@ -436,6 +439,8 @@ void SendMultiMachinePage::refresh_user_device() scroll_macine_list->Scroll(0, 0); scroll_macine_list->Layout(); sizer_machine_list->Layout(); + + m_pauseThread = false; } QDT::PrintParams SendMultiMachinePage::request_params(MachineObject* obj) @@ -1833,6 +1838,7 @@ void SendMultiMachinePage::StartThread() { return; } m_stopThread = false; + m_pauseThread = false; m_statusThread = std::thread(&SendMultiMachinePage::ThreadWorker, this); } @@ -1850,10 +1856,16 @@ void SendMultiMachinePage::ThreadWorker() { wxString msg = ""; while (!m_stopThread) { std::lock_guard lock(m_mutex); - for (auto it = m_device_items.begin(); it != m_device_items.end(); it++) { - MachineObject* temp_obj = it->second->get_obj(); - temp_obj->ams_exist_bits = qidi.get_box_state(msg, temp_obj->dev_url) ? 1 : 0; - it->second->Refresh(); + for(auto device : m_device_items) { + if (m_pauseThread) + break; + try { + MachineObject* temp_obj = device.second->get_obj(); + temp_obj->ams_exist_bits = qidi.get_box_state(msg, temp_obj->dev_url) ? 1 : 0; + } + catch (const std::exception& error) { + continue; + } } } } diff --git a/src/slic3r/GUI/SendMultiMachinePage.hpp b/src/slic3r/GUI/SendMultiMachinePage.hpp index 90cbc0c..42041ff 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.hpp +++ b/src/slic3r/GUI/SendMultiMachinePage.hpp @@ -167,6 +167,7 @@ private: //y61 std::thread m_statusThread; std::atomic m_stopThread{false}; + std::atomic m_pauseThread{ false }; std::mutex m_mutex; public: