diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index e7c875dff3..aa5051bc7d 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1958,6 +1958,9 @@ void GUI_App::init_networking_callbacks() }); }; m_agent->set_on_local_message_fn(lan_message_arrive_fn); + m_agent->set_queue_on_main_fn([this](std::function callback) { + CallAfter(callback); + }); } BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< boost::format(": exit, m_agent=%1%")%m_agent; } diff --git a/src/slic3r/Utils/NetworkAgent.cpp b/src/slic3r/Utils/NetworkAgent.cpp index 40eabb60e4..5034ce4ec9 100644 --- a/src/slic3r/Utils/NetworkAgent.cpp +++ b/src/slic3r/Utils/NetworkAgent.cpp @@ -45,6 +45,7 @@ func_set_get_country_code_fn NetworkAgent::set_get_country_code_fn_ptr = func_set_on_message_fn NetworkAgent::set_on_message_fn_ptr = nullptr; func_set_on_local_connect_fn NetworkAgent::set_on_local_connect_fn_ptr = nullptr; func_set_on_local_message_fn NetworkAgent::set_on_local_message_fn_ptr = nullptr; +func_set_queue_on_main_fn NetworkAgent::set_queue_on_main_fn_ptr = nullptr; func_connect_server NetworkAgent::connect_server_ptr = nullptr; func_is_server_connected NetworkAgent::is_server_connected_ptr = nullptr; func_refresh_connection NetworkAgent::refresh_connection_ptr = nullptr; @@ -195,6 +196,7 @@ int NetworkAgent::initialize_network_module(bool using_backup) set_on_message_fn_ptr = reinterpret_cast(get_network_function("bambu_network_set_on_message_fn")); set_on_local_connect_fn_ptr = reinterpret_cast(get_network_function("bambu_network_set_on_local_connect_fn")); set_on_local_message_fn_ptr = reinterpret_cast(get_network_function("bambu_network_set_on_local_message_fn")); + set_queue_on_main_fn_ptr = reinterpret_cast(get_network_function("bambu_network_set_queue_on_main_fn")); connect_server_ptr = reinterpret_cast(get_network_function("bambu_network_connect_server")); is_server_connected_ptr = reinterpret_cast(get_network_function("bambu_network_is_server_connected")); refresh_connection_ptr = reinterpret_cast(get_network_function("bambu_network_refresh_connection")); @@ -299,6 +301,7 @@ int NetworkAgent::unload_network_module() set_on_message_fn_ptr = nullptr; set_on_local_connect_fn_ptr = nullptr; set_on_local_message_fn_ptr = nullptr; + set_queue_on_main_fn_ptr = nullptr; connect_server_ptr = nullptr; is_server_connected_ptr = nullptr; refresh_connection_ptr = nullptr; @@ -604,6 +607,17 @@ int NetworkAgent::set_on_local_message_fn(OnMessageFn fn) return ret; } +int NetworkAgent::set_queue_on_main_fn(QueueOnMainFn fn) +{ + int ret = 0; + if (network_agent && set_queue_on_main_fn_ptr) { + ret = set_queue_on_main_fn_ptr(network_agent, fn); + if (ret) + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(" error: network_agent=%1%, ret=%2%")%network_agent %ret; + } + return ret; +} + int NetworkAgent::connect_server() { int ret = 0; diff --git a/src/slic3r/Utils/NetworkAgent.hpp b/src/slic3r/Utils/NetworkAgent.hpp index ea34244a98..9eb218e2ed 100644 --- a/src/slic3r/Utils/NetworkAgent.hpp +++ b/src/slic3r/Utils/NetworkAgent.hpp @@ -25,6 +25,7 @@ typedef int (*func_set_get_country_code_fn)(void *agent, GetCountryCodeFn fn); typedef int (*func_set_on_message_fn)(void *agent, OnMessageFn fn); typedef int (*func_set_on_local_connect_fn)(void *agent, OnLocalConnectedFn fn); typedef int (*func_set_on_local_message_fn)(void *agent, OnMessageFn fn); +typedef int (*func_set_queue_on_main_fn)(void *agent, QueueOnMainFn fn); typedef int (*func_connect_server)(void *agent); typedef bool (*func_is_server_connected)(void *agent); typedef int (*func_refresh_connection)(void *agent); @@ -117,6 +118,7 @@ public: int set_on_message_fn(OnMessageFn fn); int set_on_local_connect_fn(OnLocalConnectedFn fn); int set_on_local_message_fn(OnMessageFn fn); + int set_queue_on_main_fn(QueueOnMainFn fn); int connect_server(); bool is_server_connected(); int refresh_connection(); @@ -198,6 +200,7 @@ private: static func_set_on_message_fn set_on_message_fn_ptr; static func_set_on_local_connect_fn set_on_local_connect_fn_ptr; static func_set_on_local_message_fn set_on_local_message_fn_ptr; + static func_set_queue_on_main_fn set_queue_on_main_fn_ptr; static func_connect_server connect_server_ptr; static func_is_server_connected is_server_connected_ptr; static func_refresh_connection refresh_connection_ptr; diff --git a/src/slic3r/Utils/bambu_networking.hpp b/src/slic3r/Utils/bambu_networking.hpp index cc243215ef..3a4f770b8c 100644 --- a/src/slic3r/Utils/bambu_networking.hpp +++ b/src/slic3r/Utils/bambu_networking.hpp @@ -79,8 +79,7 @@ namespace BBL { #define BAMBU_NETWORK_LIBRARY "bambu_networking" #define BAMBU_NETWORK_AGENT_NAME "bambu_network_agent" -#define BAMBU_NETWORK_AGENT_VERSION "01.06.01.01" - +#define BAMBU_NETWORK_AGENT_VERSION "01.06.05.01" //iot preset type strings #define IOT_PRINTER_TYPE_STRING "printer" @@ -112,6 +111,8 @@ typedef std::function OnUpdateStatu typedef std::function WasCancelledFn; // local callbacks typedef std::function OnMsgArrivedFn; +// queue call to main thread +typedef std::function)> QueueOnMainFn; typedef std::function ProgressFn; typedef std::function LoginFn; diff --git a/version.inc b/version.inc index 5048c6ffc3..03c6ee698f 100644 --- a/version.inc +++ b/version.inc @@ -10,4 +10,6 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "1") endif() -set(SLIC3R_VERSION "01.06.01.54") + +# The build_version should start from 50 in master branch +set(SLIC3R_VERSION "01.06.05.01")