diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 8a5e55f21..ef395cefb 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -2673,8 +2673,12 @@ void MachineObject::update_slice_info(std::string project_id, std::string profil void MachineObject::get_firmware_info() { m_firmware_valid = false; + if (m_firmware_thread_started) + return; + boost::thread update_info_thread = Slic3r::create_thread( [&] { + m_firmware_thread_started = true; int result = 0; unsigned int http_code; std::string http_body; @@ -2745,6 +2749,7 @@ void MachineObject::get_firmware_info() catch (...) { return; } + m_firmware_thread_started = false; m_firmware_valid = true; } ); diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 59c9a13a9..d3914712d 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -617,6 +617,7 @@ public: void update_slice_info(std::string project_id, std::string profile_id, std::string subtask_id, int plate_idx); bool m_firmware_valid { false }; + bool m_firmware_thread_started { false }; void get_firmware_info(); bool is_firmware_info_valid(); };