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;
|
||||
namespace pt = boost::property_tree;
|
||||
|
||||
struct StaticBambuLib
|
||||
{
|
||||
static void reset();
|
||||
};
|
||||
|
||||
namespace Slic3r {
|
||||
namespace GUI {
|
||||
|
||||
|
@ -1834,6 +1839,7 @@ void GUI_App::restart_networking()
|
|||
{
|
||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< boost::format(" enter, mainframe %1%")%mainframe;
|
||||
on_init_network(true);
|
||||
StaticBambuLib::reset();
|
||||
if(m_agent) {
|
||||
init_networking_callbacks();
|
||||
m_agent->set_on_ssdp_msg_fn(
|
||||
|
|
|
@ -54,12 +54,15 @@ static std::map<int, std::string> error_messages = {
|
|||
};
|
||||
|
||||
struct StaticBambuLib : BambuLib {
|
||||
static StaticBambuLib & get();
|
||||
static StaticBambuLib &get(BambuLib * copy = nullptr);
|
||||
static int Fake_Bambu_Create(Bambu_Tunnel*, char const*) { return -2; }
|
||||
static void reset();
|
||||
private:
|
||||
std::vector<BambuLib *> copies_;
|
||||
};
|
||||
|
||||
PrinterFileSystem::PrinterFileSystem()
|
||||
: BambuLib(StaticBambuLib::get())
|
||||
: BambuLib(StaticBambuLib::get(this))
|
||||
{
|
||||
if (!default_thumbnail.IsOk()) {
|
||||
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))
|
||||
|
||||
StaticBambuLib &StaticBambuLib::get()
|
||||
StaticBambuLib &StaticBambuLib::get(BambuLib *copy)
|
||||
{
|
||||
static StaticBambuLib lib;
|
||||
// first load the library
|
||||
|
||||
if (lib.Bambu_Open)
|
||||
if (lib.Bambu_Create)
|
||||
return lib;
|
||||
|
||||
if (!module) {
|
||||
|
@ -1373,11 +1376,22 @@ StaticBambuLib &StaticBambuLib::get()
|
|||
GET_FUNC(Bambu_SetLogger);
|
||||
GET_FUNC(Bambu_FreeLogMsg);
|
||||
|
||||
if (!lib.Bambu_Open)
|
||||
if (!lib.Bambu_Create) {
|
||||
lib.Bambu_Create = Fake_Bambu_Create;
|
||||
if (copy)
|
||||
lib.copies_.push_back(copy);
|
||||
}
|
||||
return lib;
|
||||
}
|
||||
|
||||
void StaticBambuLib::reset()
|
||||
{
|
||||
get().Bambu_Create = nullptr;
|
||||
auto &lib = get();
|
||||
for (auto c : lib.copies_)
|
||||
*c = lib;
|
||||
}
|
||||
|
||||
extern "C" BambuLib *bambulib_get() {
|
||||
return &StaticBambuLib::get();
|
||||
}
|
||||
|
|
|
@ -19,12 +19,12 @@ END_EVENT_TABLE()
|
|||
|
||||
struct StaticBambuLib : BambuLib
|
||||
{
|
||||
static StaticBambuLib &get();
|
||||
static StaticBambuLib &get(BambuLib *);
|
||||
};
|
||||
|
||||
wxMediaCtrl3::wxMediaCtrl3(wxWindow *parent)
|
||||
: wxWindow(parent, wxID_ANY)
|
||||
, BambuLib(StaticBambuLib::get())
|
||||
, BambuLib(StaticBambuLib::get(this))
|
||||
, m_thread([this] { PlayThread(); })
|
||||
{
|
||||
SetBackgroundColour(*wxBLACK);
|
||||
|
|
Loading…
Reference in New Issue