diff options
| author | Jules Blok <jules.blok@gmail.com> | 2014-07-21 17:55:21 +0200 |
|---|---|---|
| committer | Jules Blok <jules.blok@gmail.com> | 2014-07-21 20:50:48 +0200 |
| commit | 009b4dd3764a983ba5e9476383ea07430cdff8cb (patch) | |
| tree | badc57824d6cbeee451de230c473328a3addde08 /Source/Core/DolphinWX/FrameTools.cpp | |
| parent | 36ea1890c8d1b6084a5bc2e80093878af400810a (diff) | |
Exit exclusive fullscreen when the stop confirmation is shown.
Also have the renderer remember its own fullscreen state. This is done to prevent a case where we exit exclusive fullscreen through the configuration and a focus shift at the same time. In this case the renderer would fail to detect that the fullscreen state was changed.
Diffstat (limited to 'Source/Core/DolphinWX/FrameTools.cpp')
| -rw-r--r-- | Source/Core/DolphinWX/FrameTools.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/Source/Core/DolphinWX/FrameTools.cpp b/Source/Core/DolphinWX/FrameTools.cpp index 1885ddb55e..937809e050 100644 --- a/Source/Core/DolphinWX/FrameTools.cpp +++ b/Source/Core/DolphinWX/FrameTools.cpp @@ -95,6 +95,7 @@ Core::GetWindowHandle(). #include "InputCommon/ControllerInterface/ControllerInterface.h" #include "VideoCommon/VideoBackendBase.h" +#include "VideoCommon/VideoConfig.h" #ifdef _WIN32 #ifndef SM_XVIRTUALSCREEN @@ -119,8 +120,6 @@ extern "C" { class InputPlugin; class wxFrame; -static bool confirmStop = false; - // Create menu items // --------------------- void CFrame::CreateMenu() @@ -1082,11 +1081,11 @@ void CFrame::DoStop() { if (!Core::IsRunningAndStarted()) return; - if (confirmStop) + if (m_confirmStop) return; // don't let this function run again until it finishes, or is aborted. - confirmStop = true; + m_confirmStop = true; m_bGameLoading = false; if (Core::GetState() != Core::CORE_UNINITIALIZED || @@ -1100,8 +1099,21 @@ void CFrame::DoStop() // Ask for confirmation in case the user accidentally clicked Stop / Escape if (SConfig::GetInstance().m_LocalCoreStartupParameter.bConfirmStop) { + // Pause the state during confirmation and restore it afterwards Core::EState state = Core::GetState(); - Core::SetState(Core::CORE_PAUSE); + + // If exclusive fullscreen is not enabled then we can pause the emulation + // before we've exited fullscreen. If not then we need to exit fullscreen first. + if (!RendererIsFullscreen() || !g_Config.ExclusiveFullscreenEnabled() || + SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain) + { + Core::SetState(Core::CORE_PAUSE); + } + else + { + DoFullscreen(false); + } + wxMessageDialog m_StopDlg( this, _("Do you want to stop the current emulation?"), @@ -1113,7 +1125,7 @@ void CFrame::DoStop() if (Ret != wxID_YES) { Core::SetState(state); - confirmStop = false; + m_confirmStop = false; return; } } @@ -1135,7 +1147,7 @@ void CFrame::OnStopped() { wxEndBusyCursor(); - confirmStop = false; + m_confirmStop = false; #if defined(HAVE_X11) && HAVE_X11 if (SConfig::GetInstance().m_LocalCoreStartupParameter.bDisableScreenSaver) |
