From 9f85798a0bc8d02b3f0a30fd42934f58b48e67e9 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Wed, 16 Oct 2024 10:21:47 +0800 Subject: [PATCH] ENH: call Bambu source deinit Change-Id: I7b96056aabe7a894c66fcaf61e24f783f5a1e217 Jira: STUDIO-7666 --- src/slic3r/GUI/GUI_App.cpp | 3 +++ src/slic3r/GUI/MediaPlayCtrl.cpp | 5 +---- src/slic3r/GUI/Printer/PrinterFileSystem.cpp | 8 ++++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index f02e9601b..a9191cb31 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -147,6 +147,7 @@ namespace pt = boost::property_tree; struct StaticBambuLib { static void reset(); + static void release(); }; namespace Slic3r { @@ -2240,6 +2241,8 @@ GUI_App::~GUI_App() delete preset_updater; } + StaticBambuLib::release(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< boost::format(": exit"); } diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index 8f9e393ce..2b0c30090 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -771,10 +771,7 @@ void MediaPlayCtrl::media_proc() continue; } lock.unlock(); - if (url.IsEmpty()) { - break; - } - else if (url == "") { + if (url == "") { BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl: start stop"; m_media_ctrl->Stop(); BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl: end stop"; diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp index bbe8d264f..df5fd91dd 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp @@ -69,6 +69,7 @@ struct StaticBambuLib : BambuLib { static StaticBambuLib &get(BambuLib * copy = nullptr); static int Fake_Bambu_Create(Bambu_Tunnel*, char const*) { return -2; } static void reset(); + static void release(); private: std::vector copies_; }; @@ -1645,6 +1646,7 @@ StaticBambuLib &StaticBambuLib::get(BambuLib *copy) GET_FUNC(Bambu_Destroy); GET_FUNC(Bambu_SetLogger); GET_FUNC(Bambu_FreeLogMsg); + GET_FUNC(Bambu_Deinit); if (!lib.Bambu_Create) { lib.Bambu_Create = Fake_Bambu_Create; @@ -1662,6 +1664,12 @@ void StaticBambuLib::reset() *c = lib; } +void StaticBambuLib::release() +{ + if (auto f = get().Bambu_Deinit) + f(); +} + extern "C" BambuLib *bambulib_get() { return &StaticBambuLib::get(); } \ No newline at end of file