From 262797f9d5c1324b874da2bb0411a7fb95f5da49 Mon Sep 17 00:00:00 2001 From: Andrew Eikum Date: Mon, 13 Aug 2018 09:50:36 -0500 Subject: [PATCH] [dxgi] SetFullscreenState succeeds if not changing state This fixes an error dialog on exiting Unreal Engine 4 games. --- src/dxgi/dxgi_swapchain.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/dxgi/dxgi_swapchain.cpp b/src/dxgi/dxgi_swapchain.cpp index a55be36e..304b1bbe 100644 --- a/src/dxgi/dxgi_swapchain.cpp +++ b/src/dxgi/dxgi_swapchain.cpp @@ -410,9 +410,6 @@ namespace dxvk { IDXGIOutput* pTarget) { std::lock_guard lock(m_lockWindow); - if (!IsWindow(m_window)) - return DXGI_ERROR_INVALID_CALL; - if (m_descFs.Windowed && Fullscreen) return this->EnterFullscreenMode(pTarget); else if (!m_descFs.Windowed && !Fullscreen) @@ -522,6 +519,9 @@ namespace dxvk { HRESULT DxgiSwapChain::EnterFullscreenMode(IDXGIOutput* pTarget) { Com output = static_cast(pTarget); + + if (!IsWindow(m_window)) + return DXGI_ERROR_NOT_CURRENTLY_AVAILABLE; if (output == nullptr) { if (FAILED(GetContainingOutput(&output))) { @@ -581,6 +581,9 @@ namespace dxvk { HRESULT DxgiSwapChain::LeaveFullscreenMode() { Com output; + + if (!IsWindow(m_window)) + return DXGI_ERROR_NOT_CURRENTLY_AVAILABLE; if (FAILED(m_adapter->GetOutputFromMonitor(m_monitor, &output)) || FAILED(RestoreDisplayMode(output.ptr())))