diff options
4 files changed, 5 insertions, 3 deletions
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp index e06b582ca9..2857a8577d 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp @@ -1478,6 +1478,7 @@ void CActiveAE::SFlushStream(CActiveAEStream *stream) stream->m_paused = false; stream->m_syncState = CAESyncInfo::AESyncState::SYNC_START; stream->m_syncError.Flush(); + stream->ResetFreeBuffers(); // flush the engine if we only have a single stream if (m_streams.size() == 1) diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp index 84f54cebbc..30e4fb267a 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp @@ -463,7 +463,6 @@ void CActiveAEStream::Flush() m_currentBuffer = NULL; m_leftoverBytes = 0; m_activeAE->FlushStream(this); - ResetFreeBuffers(); m_streamIsFlushed = true; } } diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp index 25ba4391d1..56ddb613c1 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp +++ b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp @@ -1089,10 +1089,12 @@ void CRenderManager::PrepareNextRender() CLog::LogF(LOGDEBUG, LOGAVTIMING, "frameOnScreen: %f renderPts: %f nextFramePts: %f -> diff: %f render: %u forceNext: %u", frameOnScreen, renderPts, nextFramePts, (renderPts - nextFramePts), renderPts >= nextFramePts, m_forceNext); + bool combined = false; if (m_presentsourcePast >= 0) { m_discard.push_back(m_presentsourcePast); m_presentsourcePast = -1; + combined = true; } if (renderPts >= nextFramePts || m_forceNext) @@ -1141,7 +1143,7 @@ void CRenderManager::PrepareNextRender() m_playerPort->UpdateRenderBuffers(m_queued.size(), m_discard.size(), m_free.size()); } - else if (renderPts >= nextFramePts - frametime) + else if (!combined && renderPts > (nextFramePts - frametime)) { m_lateframes = 0; m_presentstep = PRESENT_FLIP; diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.h b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.h index 55f1d1a278..c977b9ddfa 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.h +++ b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.h @@ -187,7 +187,7 @@ protected: STATE_CONFIGURING, STATE_CONFIGURED, }; - ERENDERSTATE m_renderState; + ERENDERSTATE m_renderState = STATE_UNCONFIGURED; CEvent m_stateEvent; /// Display latency tweak value from AdvancedSettings for the current refresh rate |