From ef4ee43bd43ec5ac61c351956963b74c5a4e97dc Mon Sep 17 00:00:00 2001 From: Joshua Wise Date: Fri, 27 Jan 2023 03:38:34 -0500 Subject: [PATCH] Linux: MediaPlayCtrl: make playback more reliable with wxUSE_GSTREAMER_PLAYER for systems that have that --- src/slic3r/GUI/MediaPlayCtrl.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index a90341bd3..e0403eeaf 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -31,6 +31,9 @@ MediaPlayCtrl::MediaPlayCtrl(wxWindow *parent, wxMediaCtrl2 *media_ctrl, const w { SetBackgroundColour(*wxWHITE); m_media_ctrl->Bind(wxEVT_MEDIA_STATECHANGED, &MediaPlayCtrl::onStateChanged, this); +#if wxUSE_GSTREAMER_PLAYER + m_media_ctrl->Bind(wxEVT_MEDIA_LOADED, &MediaPlayCtrl::onStateChanged, this); +#endif m_button_play = new Button(this, "", "media_play", wxBORDER_NONE); m_button_play->SetCanFocus(false); @@ -363,11 +366,11 @@ void MediaPlayCtrl::onStateChanged(wxMediaEvent &event) Stop(); return; } - if (last_state == MEDIASTATE_LOADING && state == wxMEDIASTATE_STOPPED) { + if (last_state == MEDIASTATE_LOADING && (state == wxMEDIASTATE_STOPPED || state == wxMEDIASTATE_PAUSED || event.GetEventType() == wxEVT_MEDIA_LOADED)) { wxSize size = m_media_ctrl->GetVideoSize(); BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl::onStateChanged: size: " << size.x << "x" << size.y; m_failed_code = m_media_ctrl->GetLastError(); - if (size.GetWidth() > 1000) { + if (size.GetWidth() > 1000 || (event.GetEventType() == wxEVT_MEDIA_LOADED)) { m_last_state = state; SetStatus(_L("Playing..."), false); m_failed_retry = 0;