From 36ea1890c8d1b6084a5bc2e80093878af400810a Mon Sep 17 00:00:00 2001 From: Jules Blok Date: Wed, 16 Jul 2014 15:53:33 +0200 Subject: Let the Renderer decide when to exit fullscreen. This ensures the transition from/to exclusive mode happens while the RenderFrame is fullscreen. This prevents fullscreen loops and relieves us of having to restore the window size after we exit fullscreen. --- Source/Core/DolphinWX/Frame.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'Source/Core/DolphinWX/Frame.cpp') diff --git a/Source/Core/DolphinWX/Frame.cpp b/Source/Core/DolphinWX/Frame.cpp index 4c258d5453..25a09d13e1 100644 --- a/Source/Core/DolphinWX/Frame.cpp +++ b/Source/Core/DolphinWX/Frame.cpp @@ -640,6 +640,11 @@ void CFrame::OnHostMessage(wxCommandEvent& event) } break; + case IDM_FULLSCREENREQUEST: + if (m_RenderFrame != nullptr) + m_RenderFrame->ShowFullScreen(event.GetInt() == 0 ? false : true); + break; + case WM_USER_CREATE: if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) m_RenderParent->SetCursor(wxCURSOR_BLANK); @@ -1185,7 +1190,18 @@ void CFrame::DoFullscreen(bool bF) [window toggleFullScreen:nil]; } #else - m_RenderFrame->ShowFullScreen(bF, wxFULLSCREEN_ALL); + if (bF) + { + m_RenderFrame->ShowFullScreen(true, wxFULLSCREEN_ALL); + } + else if (!g_ActiveConfig.backend_info.bSupportsExclusiveFullscreen || + SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain || + g_ActiveConfig.bForceBorderlessFullscreen) + { + // Exiting exclusive fullscreen should be done from a Renderer callback. + // Therefore we don't exit fullscreen from here if we support exclusive mode. + m_RenderFrame->ShowFullScreen(false, wxFULLSCREEN_ALL); + } #endif if (SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain) -- cgit v1.2.3