From 5666f8fce9d391e5499662d506ecb73a12d47418 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Tue, 17 Jan 2023 17:50:20 +0800 Subject: [PATCH] ENH: [STUDIO-2070] MediaCtrl on macOS: stop on player notify Change-Id: I9b11a99e8b3f043ff4d8837cda89bc41bfb5eb0e --- src/slic3r/GUI/wxMediaCtrl2.h | 2 ++ src/slic3r/GUI/wxMediaCtrl2.mm | 11 +++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/wxMediaCtrl2.h b/src/slic3r/GUI/wxMediaCtrl2.h index e5e1a007a..29bafb1d3 100644 --- a/src/slic3r/GUI/wxMediaCtrl2.h +++ b/src/slic3r/GUI/wxMediaCtrl2.h @@ -39,6 +39,8 @@ public: protected: void DoSetSize(int x, int y, int width, int height, int sizeFlags) override; + static void bambu_log(void const * ctx, int level, char const * msg); + private: void create_player(); void * m_player = nullptr; diff --git a/src/slic3r/GUI/wxMediaCtrl2.mm b/src/slic3r/GUI/wxMediaCtrl2.mm index 5d8431c90..7e59bb013 100644 --- a/src/slic3r/GUI/wxMediaCtrl2.mm +++ b/src/slic3r/GUI/wxMediaCtrl2.mm @@ -18,7 +18,7 @@ #define BAMBU_DYNAMIC -static void bambu_log(void const * ctx, int level, char const * msg) +void wxMediaCtrl2::bambu_log(void const * ctx, int level, char const * msg) { if (level == 1) { wxString msg2(msg); @@ -26,11 +26,14 @@ static void bambu_log(void const * ctx, int level, char const * msg) int n = msg2.find_last_of('['); if (n != wxString::npos) { long val = 0; - int * error = (int *) ctx; + wxMediaCtrl2 * ctrl = (wxMediaCtrl2 *) ctx; if (msg2.SubString(n + 1, msg2.Length() - 2).ToLong(&val)) - *error = (int) val; + ctrl->m_error = (int) val; } } + } else if (level < 0) { + wxMediaCtrl2 * ctrl = (wxMediaCtrl2 *) ctx; + ctrl->Stop(); } BOOST_LOG_TRIVIAL(info) << msg; } @@ -69,7 +72,7 @@ void wxMediaCtrl2::create_player() NSView * imageView = (NSView *) GetHandle(); BambuPlayer * player = [cls alloc]; [player initWithImageView: imageView]; - [player setLogger: bambu_log withContext: &m_error]; + [player setLogger: bambu_log withContext: this]; m_player = player; }