[PATCH 1/5] d3d9: Minimize device windows on focus loss.

Stefan Dösinger stefan at codeweavers.com
Tue Sep 23 05:57:14 CDT 2014


---
 dlls/d3d9/Makefile.in |  2 +-
 dlls/d3d9/device.c    | 16 ++++++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/dlls/d3d9/Makefile.in b/dlls/d3d9/Makefile.in
index 1c05f5a..f8b2d2b 100644
--- a/dlls/d3d9/Makefile.in
+++ b/dlls/d3d9/Makefile.in
@@ -1,6 +1,6 @@
 MODULE    = d3d9.dll
 IMPORTLIB = d3d9
-IMPORTS   = dxguid uuid wined3d
+IMPORTS   = dxguid user32 uuid wined3d
 
 C_SRCS = \
 	buffer.c \
diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c
index a40a6a1..c6bab8f 100644
--- a/dlls/d3d9/device.c
+++ b/dlls/d3d9/device.c
@@ -3459,7 +3459,23 @@ static void CDECL device_parent_activate(struct wined3d_device_parent *device_pa
         return;
 
     if (!activate)
+    {
         InterlockedCompareExchange(&device->device_state, D3D9_DEVICE_STATE_LOST, D3D9_DEVICE_STATE_OK);
+
+        if (!device->d3d_parent->extended)
+        {
+            UINT i, count = wined3d_device_get_swapchain_count(device->wined3d_device);
+            struct wined3d_swapchain *swapchain;
+            struct wined3d_swapchain_desc desc;
+
+            for (i = 0; i < count; i++)
+            {
+                swapchain = wined3d_device_get_swapchain(device->wined3d_device, i);
+                wined3d_swapchain_get_desc(swapchain, &desc);
+                ShowWindow(desc.device_window, SW_MINIMIZE);
+            }
+        }
+    }
     else if (device->d3d_parent->extended)
         InterlockedCompareExchange(&device->device_state, D3D9_DEVICE_STATE_OK, D3D9_DEVICE_STATE_LOST);
     else
-- 
1.8.5.5




More information about the wine-patches mailing list