aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp1
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp1
-rw-r--r--xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp4
-rw-r--r--xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.h2
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