From 3587bcdb9f68841dc8bcf2697a174db1f7d9070b Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Fri, 28 Feb 2020 01:43:07 +0000 Subject: [PATCH] [d3d9] Disallow creating additional swapchains if we are fullscreen From Wine tests... --- src/d3d9/d3d9_device.cpp | 4 ++++ src/d3d9/d3d9_swapchain.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index 5fa98f80..8a22031c 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -3440,6 +3440,10 @@ namespace dxvk { if (!pPresentationParameters->Windowed) return D3DERR_INVALIDCALL; + // We can't make another swapchain if we are fullscreen. + if (!m_implicitSwapchain->GetPresentParams()->Windowed) + return D3DERR_INVALIDCALL; + m_implicitSwapchain->Invalidate(pPresentationParameters->hDeviceWindow); try { diff --git a/src/d3d9/d3d9_swapchain.h b/src/d3d9/d3d9_swapchain.h index 00dd6e3b..c4350a02 100644 --- a/src/d3d9/d3d9_swapchain.h +++ b/src/d3d9/d3d9_swapchain.h @@ -83,6 +83,8 @@ namespace dxvk { D3D9Surface* GetBackBuffer(UINT iBackBuffer); + const D3DPRESENT_PARAMETERS* GetPresentParams() const { return &m_presentParams; } + private: enum BindingIds : uint32_t {