FIX: reset bambu lib after restart network plugin
Change-Id: I4a3a4b7420745835ca3fa00c6edebe9d8d98cbf6 Jira: STUDIO-7571
This commit is contained in:
parent
fd4f28c6c0
commit
28d9c6743f
|
@ -144,6 +144,11 @@
|
||||||
using namespace std::literals;
|
using namespace std::literals;
|
||||||
namespace pt = boost::property_tree;
|
namespace pt = boost::property_tree;
|
||||||
|
|
||||||
|
struct StaticBambuLib
|
||||||
|
{
|
||||||
|
static void reset();
|
||||||
|
};
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
|
||||||
|
@ -1834,6 +1839,7 @@ void GUI_App::restart_networking()
|
||||||
{
|
{
|
||||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< boost::format(" enter, mainframe %1%")%mainframe;
|
BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< boost::format(" enter, mainframe %1%")%mainframe;
|
||||||
on_init_network(true);
|
on_init_network(true);
|
||||||
|
StaticBambuLib::reset();
|
||||||
if(m_agent) {
|
if(m_agent) {
|
||||||
init_networking_callbacks();
|
init_networking_callbacks();
|
||||||
m_agent->set_on_ssdp_msg_fn(
|
m_agent->set_on_ssdp_msg_fn(
|
||||||
|
|
|
@ -54,12 +54,15 @@ static std::map<int, std::string> error_messages = {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct StaticBambuLib : BambuLib {
|
struct StaticBambuLib : BambuLib {
|
||||||
static StaticBambuLib & get();
|
static StaticBambuLib &get(BambuLib * copy = nullptr);
|
||||||
static int Fake_Bambu_Create(Bambu_Tunnel*, char const*) { return -2; }
|
static int Fake_Bambu_Create(Bambu_Tunnel*, char const*) { return -2; }
|
||||||
|
static void reset();
|
||||||
|
private:
|
||||||
|
std::vector<BambuLib *> copies_;
|
||||||
};
|
};
|
||||||
|
|
||||||
PrinterFileSystem::PrinterFileSystem()
|
PrinterFileSystem::PrinterFileSystem()
|
||||||
: BambuLib(StaticBambuLib::get())
|
: BambuLib(StaticBambuLib::get(this))
|
||||||
{
|
{
|
||||||
if (!default_thumbnail.IsOk()) {
|
if (!default_thumbnail.IsOk()) {
|
||||||
default_thumbnail = *Slic3r::GUI::BitmapCache().load_svg("printer_file", 0, 0);
|
default_thumbnail = *Slic3r::GUI::BitmapCache().load_svg("printer_file", 0, 0);
|
||||||
|
@ -1344,12 +1347,12 @@ static void* get_function(const char* name)
|
||||||
|
|
||||||
#define GET_FUNC(x) lib.x = reinterpret_cast<decltype(lib.x)>(get_function(#x))
|
#define GET_FUNC(x) lib.x = reinterpret_cast<decltype(lib.x)>(get_function(#x))
|
||||||
|
|
||||||
StaticBambuLib &StaticBambuLib::get()
|
StaticBambuLib &StaticBambuLib::get(BambuLib *copy)
|
||||||
{
|
{
|
||||||
static StaticBambuLib lib;
|
static StaticBambuLib lib;
|
||||||
// first load the library
|
// first load the library
|
||||||
|
|
||||||
if (lib.Bambu_Open)
|
if (lib.Bambu_Create)
|
||||||
return lib;
|
return lib;
|
||||||
|
|
||||||
if (!module) {
|
if (!module) {
|
||||||
|
@ -1373,11 +1376,22 @@ StaticBambuLib &StaticBambuLib::get()
|
||||||
GET_FUNC(Bambu_SetLogger);
|
GET_FUNC(Bambu_SetLogger);
|
||||||
GET_FUNC(Bambu_FreeLogMsg);
|
GET_FUNC(Bambu_FreeLogMsg);
|
||||||
|
|
||||||
if (!lib.Bambu_Open)
|
if (!lib.Bambu_Create) {
|
||||||
lib.Bambu_Create = Fake_Bambu_Create;
|
lib.Bambu_Create = Fake_Bambu_Create;
|
||||||
|
if (copy)
|
||||||
|
lib.copies_.push_back(copy);
|
||||||
|
}
|
||||||
return lib;
|
return lib;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StaticBambuLib::reset()
|
||||||
|
{
|
||||||
|
get().Bambu_Create = nullptr;
|
||||||
|
auto &lib = get();
|
||||||
|
for (auto c : lib.copies_)
|
||||||
|
*c = lib;
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" BambuLib *bambulib_get() {
|
extern "C" BambuLib *bambulib_get() {
|
||||||
return &StaticBambuLib::get();
|
return &StaticBambuLib::get();
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,12 +19,12 @@ END_EVENT_TABLE()
|
||||||
|
|
||||||
struct StaticBambuLib : BambuLib
|
struct StaticBambuLib : BambuLib
|
||||||
{
|
{
|
||||||
static StaticBambuLib &get();
|
static StaticBambuLib &get(BambuLib *);
|
||||||
};
|
};
|
||||||
|
|
||||||
wxMediaCtrl3::wxMediaCtrl3(wxWindow *parent)
|
wxMediaCtrl3::wxMediaCtrl3(wxWindow *parent)
|
||||||
: wxWindow(parent, wxID_ANY)
|
: wxWindow(parent, wxID_ANY)
|
||||||
, BambuLib(StaticBambuLib::get())
|
, BambuLib(StaticBambuLib::get(this))
|
||||||
, m_thread([this] { PlayThread(); })
|
, m_thread([this] { PlayThread(); })
|
||||||
{
|
{
|
||||||
SetBackgroundColour(*wxBLACK);
|
SetBackgroundColour(*wxBLACK);
|
||||||
|
|
Loading…
Reference in New Issue