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 {