From 59ba745d77f61768b70edde2af02f8717c46d4f3 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 16 Feb 2013 00:07:30 +0100 Subject: [PATCH] xbmc: add PR2245 Signed-off-by: Stephan Raue --- .../xbmc/patches/xbmc-990.15-PR2245.patch | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 packages/mediacenter/xbmc/patches/xbmc-990.15-PR2245.patch diff --git a/packages/mediacenter/xbmc/patches/xbmc-990.15-PR2245.patch b/packages/mediacenter/xbmc/patches/xbmc-990.15-PR2245.patch new file mode 100644 index 0000000000..40b17c8756 --- /dev/null +++ b/packages/mediacenter/xbmc/patches/xbmc-990.15-PR2245.patch @@ -0,0 +1,53 @@ +From 8b6032793bcc05a6ec06773c95463a22d2c9881b Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Fri, 15 Feb 2013 17:58:41 +0000 +Subject: [PATCH] [rbp] Fix for hang after seeking introduced by ASS fix + +#2206 introduced a regression when seeking in some types of SD files where the video stutters and/or stalls. +This is caused by using the wrong clock in FlipPage +--- + xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp +index ec7e7f6..5a6e31e 100644 +--- a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp ++++ b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp +@@ -461,15 +461,15 @@ void OMXPlayerVideo::Output(int iGroupId, double pts, bool bDropPacket) + m_iSleepEndTime = iCurrentClock + iSleepTime; + } + +- if (!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < m_iSleepEndTime) ++ if (!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < m_iSleepEndTime + DVD_MSEC_TO_TIME(500)) + return; + +- m_iSleepEndTime = DVD_NOPTS_VALUE; +- + double pts_media = m_av_clock->OMXMediaTime(false, false); + ProcessOverlays(iGroupId, pts_media); + +- g_renderManager.FlipPage(CThread::m_bStop, pts_media / DVD_TIME_BASE, -1, FS_NONE); ++ g_renderManager.FlipPage(CThread::m_bStop, m_iSleepEndTime / DVD_TIME_BASE, -1, FS_NONE); ++ ++ m_iSleepEndTime = DVD_NOPTS_VALUE; + + //m_av_clock->WaitAbsoluteClock((iCurrentClock + iSleepTime)); + } +@@ -580,12 +580,14 @@ void OMXPlayerVideo::Process() + m_av_clock->OMXReset(false); + m_av_clock->UnLock(); + m_started = false; ++ m_iSleepEndTime = DVD_NOPTS_VALUE; + } + else if (pMsg->IsType(CDVDMsg::GENERAL_FLUSH)) // private message sent by (COMXPlayerVideo::Flush()) + { + CLog::Log(LOGDEBUG, "COMXPlayerVideo - CDVDMsg::GENERAL_FLUSH"); + m_stalled = true; + m_started = false; ++ m_iSleepEndTime = DVD_NOPTS_VALUE; + m_av_clock->Lock(); + m_av_clock->OMXStop(false); + m_omxVideo.Reset(); +-- +1.7.10 +