From 781c91466b3070caabebd4b35ed862c062fd224d Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sat, 18 Apr 2015 16:58:54 +0200 Subject: dvdplayer: proper flush when triggering resync after a stall --- xbmc/cores/dvdplayer/DVDPlayer.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp index 143ea0625c..23b07060ad 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -1782,7 +1782,7 @@ void CDVDPlayer::HandlePlaySpeed() if (m_CurrentAudio.id >= 0 && m_CurrentAudio.inited && m_dvdPlayerAudio->IsStalled() && m_dvdPlayerAudio->GetLevel() == 0) { - CLog::Log(LOGDEBUG,"CDVDPlayer::HandlePlaySpeed - audio stream stalled, tiggering re-sync"); + CLog::Log(LOGDEBUG,"CDVDPlayer::HandlePlaySpeed - audio stream stalled, triggering re-sync"); TriggerResync(); } } @@ -3610,6 +3610,13 @@ void CDVDPlayer::TriggerResync() m_dvdPlayerVideo->FlushMessages(); m_dvdPlayerSubtitle->FlushMessages(); m_dvdPlayerTeletext->FlushMessages(); + + // make sure players are properly flushed, should put them in stalled state + CDVDMsgGeneralSynchronize* msg = new CDVDMsgGeneralSynchronize(1000, 0); + m_dvdPlayerAudio->SendMessage(msg->Acquire(), 1); + m_dvdPlayerVideo->SendMessage(msg->Acquire(), 1); + msg->Wait(&m_bStop, 0); + msg->Release(); } // since we call ffmpeg functions to decode, this is being called in the same thread as ::Process() is -- cgit v1.2.3