From 6560135c64550343be95a83532cad78aa5787f5a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20D=C3=B6singer?= Date: Wed, 5 Jun 2013 10:55:39 +0200 Subject: [PATCH] ddraw: Update the focus window after recreating the swapchain. --- dlls/ddraw/ddraw.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c index afb95c9e9d3..d2855891f37 100644 --- a/dlls/ddraw/ddraw.c +++ b/dlls/ddraw/ddraw.c @@ -814,10 +814,6 @@ static HRESULT WINAPI ddraw7_SetCooperativeLevel(IDirectDraw7 *iface, HWND windo This->focuswindow = NULL; } - if ((This->cooperative_level & DDSCL_EXCLUSIVE) - && (window != This->dest_window || !(cooplevel & DDSCL_EXCLUSIVE))) - wined3d_device_release_focus_window(This->wined3d_device); - if ((cooplevel & DDSCL_FULLSCREEN) != (This->cooperative_level & DDSCL_FULLSCREEN) || window != This->dest_window) { if (This->cooperative_level & DDSCL_FULLSCREEN) @@ -833,18 +829,6 @@ static HRESULT WINAPI ddraw7_SetCooperativeLevel(IDirectDraw7 *iface, HWND windo } } - if ((cooplevel & DDSCL_EXCLUSIVE) - && (window != This->dest_window || !(This->cooperative_level & DDSCL_EXCLUSIVE))) - { - hr = wined3d_device_acquire_focus_window(This->wined3d_device, window); - if (FAILED(hr)) - { - ERR("Failed to acquire focus window, hr %#x.\n", hr); - wined3d_mutex_unlock(); - return hr; - } - } - if (cooplevel & DDSCL_MULTITHREADED && !(This->cooperative_level & DDSCL_MULTITHREADED)) wined3d_device_set_multithreaded(This->wined3d_device); @@ -896,6 +880,22 @@ static HRESULT WINAPI ddraw7_SetCooperativeLevel(IDirectDraw7 *iface, HWND windo wined3d_stateblock_decref(stateblock); } + if ((This->cooperative_level & DDSCL_EXCLUSIVE) + && (window != This->dest_window || !(cooplevel & DDSCL_EXCLUSIVE))) + wined3d_device_release_focus_window(This->wined3d_device); + + if ((cooplevel & DDSCL_EXCLUSIVE) + && (window != This->dest_window || !(This->cooperative_level & DDSCL_EXCLUSIVE))) + { + hr = wined3d_device_acquire_focus_window(This->wined3d_device, window); + if (FAILED(hr)) + { + ERR("Failed to acquire focus window, hr %#x.\n", hr); + wined3d_mutex_unlock(); + return hr; + } + } + /* Unhandled flags */ if(cooplevel & DDSCL_ALLOWREBOOT) WARN("(%p) Unhandled flag DDSCL_ALLOWREBOOT, harmless\n", This); -- 2.11.4.GIT