From 84d896bbd378215af7480dd43653c8c86bde3879 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 3 May 2026 16:59:30 +0800 Subject: [PATCH] fixes an issue that devmgr ping cloud server every second Co-authored-by: Copilot --- src/slic3r/GUI/DeviceCore/DevManager.cpp | 5 +++-- src/slic3r/GUI/DeviceCore/DevManager.h | 2 +- src/slic3r/Utils/NetworkAgent.cpp | 12 ++++++++++-- src/slic3r/Utils/NetworkAgent.hpp | 2 +- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/DeviceCore/DevManager.cpp b/src/slic3r/GUI/DeviceCore/DevManager.cpp index 5535f8b696..0e197a236b 100644 --- a/src/slic3r/GUI/DeviceCore/DevManager.cpp +++ b/src/slic3r/GUI/DeviceCore/DevManager.cpp @@ -913,12 +913,13 @@ namespace Slic3r } // do some refresh - if (Slic3r::GUI::wxGetApp().is_user_login(Slic3r::GUI::wxGetApp().get_printer_cloud_provider())) + const auto cloud_provider = Slic3r::GUI::wxGetApp().get_printer_cloud_provider(); + if (Slic3r::GUI::wxGetApp().is_user_login(cloud_provider)) { m_manager->check_pushing(); try { - agent->refresh_connection(); + agent->refresh_connection(cloud_provider); } catch (...) { diff --git a/src/slic3r/GUI/DeviceCore/DevManager.h b/src/slic3r/GUI/DeviceCore/DevManager.h index 095d9ea779..087e3312c9 100644 --- a/src/slic3r/GUI/DeviceCore/DevManager.h +++ b/src/slic3r/GUI/DeviceCore/DevManager.h @@ -116,7 +116,7 @@ public: class DeviceManagerRefresher : public wxObject { wxTimer* m_timer{ nullptr }; - int m_timer_interval_msec = 1000; + int m_timer_interval_msec = 5000; DeviceManager* m_manager{ nullptr }; diff --git a/src/slic3r/Utils/NetworkAgent.cpp b/src/slic3r/Utils/NetworkAgent.cpp index 32da6f0b3c..03e677b636 100644 --- a/src/slic3r/Utils/NetworkAgent.cpp +++ b/src/slic3r/Utils/NetworkAgent.cpp @@ -340,9 +340,17 @@ bool NetworkAgent::is_server_connected(const std::string& provider) return false; } -int NetworkAgent::refresh_connection() +int NetworkAgent::refresh_connection(const std::string& provider) { - return invoke_on_all_cloud_agents(m_cloud_agents, [](ICloudServiceAgent& cloud_agent) { return cloud_agent.refresh_connection(); }); + if(provider.empty()) + return invoke_on_all_cloud_agents(m_cloud_agents, [](ICloudServiceAgent& cloud_agent) { return cloud_agent.refresh_connection(); }); + else { + const auto cloud_agent = get_cloud_agent(provider); + if (cloud_agent) + return cloud_agent->refresh_connection(); + return -1; + } + } void NetworkAgent::enable_multi_machine(bool enable, const std::string& provider) diff --git a/src/slic3r/Utils/NetworkAgent.hpp b/src/slic3r/Utils/NetworkAgent.hpp index 74fb839aa4..e069066b58 100644 --- a/src/slic3r/Utils/NetworkAgent.hpp +++ b/src/slic3r/Utils/NetworkAgent.hpp @@ -71,7 +71,7 @@ public: int set_on_http_error_fn(AppOnHttpErrorFn fn); int set_get_country_code_fn(GetCountryCodeFn fn); int connect_server(); - int refresh_connection(); + int refresh_connection(const std::string& provider = ""); int change_user(std::string user_info, const std::string& provider = ORCA_CLOUD_PROVIDER); bool is_user_login(const std::string& provider = ORCA_CLOUD_PROVIDER);