diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp index 66b7daeec54a6..2eacedb98649c 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp @@ -1921,8 +1921,6 @@ void CApplication::Render() } } - CSingleLock lock(g_graphicsContext); - if (g_graphicsContext.IsFullScreenVideo() && m_pPlayer->IsPlaying() && vsync_mode == VSYNC_VIDEO) g_Windowing.SetVSync(true); else if (vsync_mode == VSYNC_ALWAYS) @@ -1983,8 +1981,6 @@ void CApplication::Render() m_lastRenderTime = now; } - lock.Leave(); - if (g_graphicsContext.IsFullScreenVideo()) { g_Windowing.FinishPipeline(); diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp index b6e9ea531358a..faf38dafe0eba 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp +++ b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp @@ -1045,6 +1045,8 @@ float CRenderManager::GetMaximumFPS() void CRenderManager::Render(bool clear, DWORD flags, DWORD alpha, bool gui) { + CSingleExit exitLock(g_graphicsContext); + CSharedLock lock(m_sharedSection); if (m_renderState != STATE_CONFIGURED) @@ -1105,7 +1107,6 @@ bool CRenderManager::IsVideoLayer() /* simple present method */ void CRenderManager::PresentSingle(bool clear, DWORD flags, DWORD alpha) { - CSingleLock lock(g_graphicsContext); SPresent& m = m_Queue[m_presentsource]; if (m.presentfield == FS_BOT) @@ -1120,7 +1121,6 @@ void CRenderManager::PresentSingle(bool clear, DWORD flags, DWORD alpha) * we just render the two fields right after eachother */ void CRenderManager::PresentFields(bool clear, DWORD flags, DWORD alpha) { - CSingleLock lock(g_graphicsContext); SPresent& m = m_Queue[m_presentsource]; if(m_presentstep == PRESENT_FRAME) @@ -1141,7 +1141,6 @@ void CRenderManager::PresentFields(bool clear, DWORD flags, DWORD alpha) void CRenderManager::PresentBlend(bool clear, DWORD flags, DWORD alpha) { - CSingleLock lock(g_graphicsContext); SPresent& m = m_Queue[m_presentsource]; if( m.presentfield == FS_BOT ) diff --git a/xbmc/guilib/GUIWindowManager.cpp b/xbmc/guilib/GUIWindowManager.cpp index f4709a2e0b9ae..5db856f38afe7 100644 --- a/xbmc/guilib/GUIWindowManager.cpp +++ b/xbmc/guilib/GUIWindowManager.cpp @@ -1060,7 +1060,7 @@ void CGUIWindowManager::RenderEx() const bool CGUIWindowManager::Render() { assert(g_application.IsCurrentThread()); - CSingleLock lock(g_graphicsContext); + CSingleExit lock(g_graphicsContext); CDirtyRegionList dirtyRegions = m_tracker.GetDirtyRegions();