Module: wine Branch: master Commit: 292522c4ad121375bd284eaeae54a0c5d0fe23f3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=292522c4ad121375bd284eaeae...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Tue Jan 15 08:46:54 2013 +0100
ddraw: Only modify the ddraw destination window at the end of ddraw7_SetCooperativeLevel().
We want this to happen after ddraw_destroy_swapchain() in particular, because dest_window being different from d3d_window will cause it to destroy d3d_window, but this seems like a good idea in general.
---
dlls/ddraw/ddraw.c | 10 ++-------- dlls/ddraw/tests/ddraw1.c | 2 +- dlls/ddraw/tests/ddraw2.c | 2 +- dlls/ddraw/tests/ddraw4.c | 2 +- dlls/ddraw/tests/ddraw7.c | 2 +- 5 files changed, 6 insertions(+), 12 deletions(-)
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c index ca6f8d5..21acc28 100644 --- a/dlls/ddraw/ddraw.c +++ b/dlls/ddraw/ddraw.c @@ -551,9 +551,6 @@ static HRESULT ddraw_set_focus_window(struct ddraw *ddraw, HWND window)
ddraw->focuswindow = window;
- /* Use the focus window for drawing too. */ - ddraw->dest_window = ddraw->focuswindow; - return DD_OK; }
@@ -852,10 +849,6 @@ static HRESULT WINAPI ddraw7_SetCooperativeLevel(IDirectDraw7 *iface, HWND hwnd, } }
- /* Don't override focus windows or private device windows */ - if (hwnd && !This->focuswindow && !This->devicewindow && (hwnd != window)) - This->dest_window = hwnd; - if (cooplevel & DDSCL_MULTITHREADED && !(This->cooperative_level & DDSCL_MULTITHREADED)) wined3d_device_set_multithreaded(This->wined3d_device);
@@ -886,7 +879,7 @@ static HRESULT WINAPI ddraw7_SetCooperativeLevel(IDirectDraw7 *iface, HWND hwnd, ddraw_destroy_swapchain(This); }
- if (FAILED(hr = ddraw_create_swapchain(This, This->dest_window, !(cooplevel & DDSCL_FULLSCREEN)))) + if (FAILED(hr = ddraw_create_swapchain(This, hwnd, !(cooplevel & DDSCL_FULLSCREEN)))) ERR("Failed to create swapchain, hr %#x.\n", hr);
if (restore_state) @@ -922,6 +915,7 @@ static HRESULT WINAPI ddraw7_SetCooperativeLevel(IDirectDraw7 *iface, HWND hwnd,
/* Store the cooperative_level */ This->cooperative_level = cooplevel; + This->dest_window = hwnd; TRACE("SetCooperativeLevel retuning DD_OK\n"); wined3d_mutex_unlock();
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c index a37e0b7..2cbcf44 100644 --- a/dlls/ddraw/tests/ddraw1.c +++ b/dlls/ddraw/tests/ddraw1.c @@ -2651,7 +2651,7 @@ static void test_coop_level_multi_window(void) ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr); hr = IDirectDraw_SetCooperativeLevel(ddraw, window2, DDSCL_NORMAL); ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr); - todo_wine ok(IsWindow(window1), "Window 1 was destroyed.\n"); + ok(IsWindow(window1), "Window 1 was destroyed.\n"); ok(IsWindow(window2), "Window 2 was destroyed.\n");
IDirectDraw_Release(ddraw); diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c index e475f5b..79b0e9b 100644 --- a/dlls/ddraw/tests/ddraw2.c +++ b/dlls/ddraw/tests/ddraw2.c @@ -2770,7 +2770,7 @@ static void test_coop_level_multi_window(void) ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr); hr = IDirectDraw2_SetCooperativeLevel(ddraw, window2, DDSCL_NORMAL); ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr); - todo_wine ok(IsWindow(window1), "Window 1 was destroyed.\n"); + ok(IsWindow(window1), "Window 1 was destroyed.\n"); ok(IsWindow(window2), "Window 2 was destroyed.\n");
IDirectDraw2_Release(ddraw); diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index 82cd5d5..3d81d1d 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -2957,7 +2957,7 @@ static void test_coop_level_multi_window(void) ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr); hr = IDirectDraw4_SetCooperativeLevel(ddraw, window2, DDSCL_NORMAL); ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr); - todo_wine ok(IsWindow(window1), "Window 1 was destroyed.\n"); + ok(IsWindow(window1), "Window 1 was destroyed.\n"); ok(IsWindow(window2), "Window 2 was destroyed.\n");
IDirectDraw4_Release(ddraw); diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index cd22e0c..5668dc7 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -2766,7 +2766,7 @@ static void test_coop_level_multi_window(void) ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr); hr = IDirectDraw7_SetCooperativeLevel(ddraw, window2, DDSCL_NORMAL); ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr); - todo_wine ok(IsWindow(window1), "Window 1 was destroyed.\n"); + ok(IsWindow(window1), "Window 1 was destroyed.\n"); ok(IsWindow(window2), "Window 2 was destroyed.\n");
IDirectDraw7_Release(ddraw);