From 3ebd4b28a3195b15204469a311bb081f0d03f996 Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Fri, 10 Jan 2020 04:30:55 +0000 Subject: [PATCH] [d3d9] Defer dialog mode swapchain recreation decision to Present Avoids unnecessary swapchain recreations if the game calls SetDialogBoxMode multiple times per frame --- src/d3d9/d3d9_swapchain.cpp | 7 +++---- src/d3d9/d3d9_swapchain.h | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/d3d9/d3d9_swapchain.cpp b/src/d3d9/d3d9_swapchain.cpp index 1484b0e14..42d19b7d1 100644 --- a/src/d3d9/d3d9_swapchain.cpp +++ b/src/d3d9/d3d9_swapchain.cpp @@ -115,7 +115,7 @@ namespace dxvk { bool recreate = false; recreate |= m_presenter == nullptr; recreate |= window != m_window; - recreate |= m_dialogChanged; + recreate |= m_dialog != m_lastDialog; m_window = window; @@ -127,7 +127,7 @@ namespace dxvk { m_vsync = vsync; - m_dialogChanged = false; + m_lastDialog = m_dialog; try { if (recreate) @@ -400,8 +400,7 @@ namespace dxvk { // However it doesn't appear to error at all in any of my tests of these // cases described in the documentation. - m_dialogChanged = m_dialog != bEnableDialogs; - m_dialog = bEnableDialogs; + m_dialog = bEnableDialogs; return D3D_OK; } diff --git a/src/d3d9/d3d9_swapchain.h b/src/d3d9/d3d9_swapchain.h index 9711a4ffb..d0d16ca24 100644 --- a/src/d3d9/d3d9_swapchain.h +++ b/src/d3d9/d3d9_swapchain.h @@ -146,7 +146,7 @@ namespace dxvk { bool m_vsync = true; bool m_dialog; - bool m_dialogChanged = false; + bool m_lastDialog = false; HWND m_window = nullptr; HMONITOR m_monitor = nullptr;