From 525d24a7fc1e8ce5550f911849cf8dcba8f07b4b Mon Sep 17 00:00:00 2001 From: Vladislav Mikhalin Date: Sun, 21 Sep 2025 16:03:24 +0300 Subject: [PATCH] avplayer: do not start the video multiple times (#3638) --- src/core/libraries/avplayer/avplayer_state.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/core/libraries/avplayer/avplayer_state.cpp b/src/core/libraries/avplayer/avplayer_state.cpp index 38811d853..f2912d89d 100644 --- a/src/core/libraries/avplayer/avplayer_state.cpp +++ b/src/core/libraries/avplayer/avplayer_state.cpp @@ -176,13 +176,18 @@ bool AvPlayerState::GetStreamInfo(u32 stream_index, AvPlayerStreamInfo& info) { // Called inside GAME thread bool AvPlayerState::Start() { std::shared_lock lock(m_source_mutex); - if (m_up_source == nullptr || !m_up_source->Start()) { - LOG_ERROR(Lib_AvPlayer, "Could not start playback."); - return false; + if (m_current_state == AvState::Ready || m_current_state == AvState::Stop || Stop()) { + if (!m_up_source->Start()) { + LOG_ERROR(Lib_AvPlayer, "Could not start playback."); + return false; + } + SetState(AvState::Play); + OnPlaybackStateChanged(AvState::Play); + return true; } - SetState(AvState::Play); - OnPlaybackStateChanged(AvState::Play); - return true; + + LOG_ERROR(Lib_AvPlayer, "Could not start playback."); + return false; } // Called inside GAME thread