[PATCH 1/5] ddraw: Update the focus window after recreating the swapchain
Stefan Dösinger
stefan at codeweavers.com
Wed Jun 5 03:55:39 CDT 2013
This is a preparation for the next patch. I've put it into a separate
patch to make regression debugging easier. Some applications are quite
particular about when and which events are generated during ddraw setup.
---
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 afb95c9..d285589 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);
--
1.8.1.5
More information about the wine-patches
mailing list