From 265e3bd0dfccb359d62363d6a4c1d75077cdd45e Mon Sep 17 00:00:00 2001 From: peak3d Date: Fri, 8 Feb 2019 16:00:26 +0100 Subject: [PATCH] [VideoPlayer] Uninitialize RenderManager early on playback stop --- xbmc/cores/VideoPlayer/VideoPlayer.cpp | 3 ++- xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/VideoPlayer/VideoPlayer.cpp b/xbmc/cores/VideoPlayer/VideoPlayer.cpp index eb84f45af8672..e5bfc1a98ad82 100644 --- a/xbmc/cores/VideoPlayer/VideoPlayer.cpp +++ b/xbmc/cores/VideoPlayer/VideoPlayer.cpp @@ -742,6 +742,8 @@ bool CVideoPlayer::CloseFile(bool reopen) if(m_pInputStream) m_pInputStream->Abort(); + m_renderManager.UnInit(); + CLog::Log(LOGNOTICE, "VideoPlayer: waiting for threads to exit"); // wait for the main thread to finish up @@ -758,7 +760,6 @@ bool CVideoPlayer::CloseFile(bool reopen) m_HasAudio = false; CLog::Log(LOGNOTICE, "VideoPlayer: finished waiting"); - m_renderManager.UnInit(); return true; } diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp index 4d8e07b385e84..400486756d3a6 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp +++ b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp @@ -90,6 +90,9 @@ bool CRenderManager::Configure(const VideoPicture& picture, float fps, unsigned { CSingleLock lock(m_statelock); + if (!m_bRenderGUI) + return true; + if (m_width == picture.iWidth && m_height == picture.iHeight && m_dwidth == picture.iDisplayWidth && @@ -399,6 +402,7 @@ void CRenderManager::UnInit() m_renderState = STATE_UNCONFIGURED; m_width = 0; m_height = 0; + m_bRenderGUI = false; RemoveCaptures(); m_initEvent.Set();