From 29b03d5e53eed7cef980daa8dc73871f2a34e743 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Mon, 20 Feb 2023 15:29:12 +0800 Subject: [PATCH] FIX: disconnect lan mode printer when switch another printer Change-Id: I6480c5c24d97c5e25eaa0878732590e6c1412bdd Signed-off-by: Stone Li --- src/slic3r/GUI/DeviceManager.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index a05592f6c..f4f4355be 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -3960,6 +3960,16 @@ bool DeviceManager::set_selected_machine(std::string dev_id) BOOST_LOG_TRIVIAL(info) << "set_selected_machine=" << dev_id; auto my_machine_list = get_my_machine_list(); auto it = my_machine_list.find(dev_id); + + // disconnect last + auto last_selected = my_machine_list.find(selected_machine); + if (last_selected != my_machine_list.end()) { + if (last_selected->second->connection_type() == "lan") { + m_agent->disconnect_printer(); + } + } + + // connect curr if (it != my_machine_list.end()) { if (selected_machine == dev_id) { if (it->second->connection_type() != "lan") { @@ -3969,7 +3979,6 @@ bool DeviceManager::set_selected_machine(std::string dev_id) } else { // lan mode printer reconnect printer if (m_agent) { - m_agent->disconnect_printer(); it->second->reset(); it->second->connect(); it->second->set_lan_mode_connection_state(true); @@ -3986,7 +3995,6 @@ bool DeviceManager::set_selected_machine(std::string dev_id) it->second->reset_update_time(); } } else { - m_agent->disconnect_printer(); it->second->reset(); it->second->connect(); it->second->set_lan_mode_connection_state(true);