From 6a33848a6df57fb9f2db743b6128cf99d4ae7baa Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Fri, 10 Feb 2023 18:43:23 +0800 Subject: [PATCH] FIX: [STUDIO-2234] wxMediaCtrl2 Stop twice on macOS Change-Id: I645ada1b00a6d43e29a743b8f83f39fa75481a63 --- src/slic3r/GUI/wxMediaCtrl2.h | 2 ++ src/slic3r/GUI/wxMediaCtrl2.mm | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/wxMediaCtrl2.h b/src/slic3r/GUI/wxMediaCtrl2.h index 29bafb1d3f..e894793afb 100644 --- a/src/slic3r/GUI/wxMediaCtrl2.h +++ b/src/slic3r/GUI/wxMediaCtrl2.h @@ -40,6 +40,8 @@ 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); + + void NotifyStopped(); private: void create_player(); diff --git a/src/slic3r/GUI/wxMediaCtrl2.mm b/src/slic3r/GUI/wxMediaCtrl2.mm index 7e59bb0132..bb78fe535e 100644 --- a/src/slic3r/GUI/wxMediaCtrl2.mm +++ b/src/slic3r/GUI/wxMediaCtrl2.mm @@ -33,7 +33,7 @@ void wxMediaCtrl2::bambu_log(void const * ctx, int level, char const * msg) } } else if (level < 0) { wxMediaCtrl2 * ctrl = (wxMediaCtrl2 *) ctx; - ctrl->Stop(); + ctrl->NotifyStopped(); } BOOST_LOG_TRIVIAL(info) << msg; } @@ -129,6 +129,11 @@ void wxMediaCtrl2::Stop() } BambuPlayer * player2 = (BambuPlayer *) m_player; [player2 close]; + NotifyStopped(); +} + +void wxMediaCtrl2::NotifyStopped() +{ if (m_state != wxMEDIASTATE_STOPPED) { m_state = wxMEDIASTATE_STOPPED; wxMediaEvent event(wxEVT_MEDIA_STATECHANGED);