Henri Verbeet : ddraw: Make switching to/ from fullscreen work more than once.

Alexandre Julliard julliard at winehq.org
Wed Nov 10 11:09:41 CST 2010


Module: wine
Branch: master
Commit: 2b0684c56db343112d845e0b277bf831f6b578df
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2b0684c56db343112d845e0b277bf831f6b578df

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Wed Nov 10 10:53:02 2010 +0100

ddraw: Make switching to/from fullscreen work more than once.

---

 dlls/ddraw/ddraw.c |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index e155482..b9ff201 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -647,15 +647,12 @@ static HRESULT WINAPI ddraw7_SetCooperativeLevel(IDirectDraw7 *iface, HWND hwnd,
             && (hwnd != window || !(cooplevel & DDSCL_EXCLUSIVE)))
         IWineD3DDevice_ReleaseFocusWindow(This->wineD3DDevice);
 
-    /* Do we switch from fullscreen to non-fullscreen ? */
-    if (!(cooplevel & DDSCL_FULLSCREEN) && (This->cooperative_level & DDSCL_FULLSCREEN))
-    {
-        IWineD3DDevice_RestoreFullscreenWindow(This->wineD3DDevice, This->dest_window);
-    }
-
-    /* Don't override focus windows or private device windows */
-    if (hwnd && !This->focuswindow && !This->devicewindow && (hwnd != window))
+    if ((cooplevel & DDSCL_FULLSCREEN) != (This->cooperative_level & DDSCL_FULLSCREEN) || hwnd != window)
     {
+        if (This->cooperative_level & DDSCL_FULLSCREEN)
+        {
+            IWineD3DDevice_RestoreFullscreenWindow(This->wineD3DDevice, window);
+        }
         if (cooplevel & DDSCL_FULLSCREEN)
         {
             WINED3DDISPLAYMODE display_mode;
@@ -663,7 +660,6 @@ static HRESULT WINAPI ddraw7_SetCooperativeLevel(IDirectDraw7 *iface, HWND hwnd,
             IWineD3D_GetAdapterDisplayMode(This->wineD3D, WINED3DADAPTER_DEFAULT, &display_mode);
             IWineD3DDevice_SetupFullscreenWindow(This->wineD3DDevice, hwnd, display_mode.Width, display_mode.Height);
         }
-        This->dest_window = hwnd;
     }
 
     if ((cooplevel & DDSCL_EXCLUSIVE)
@@ -678,6 +674,10 @@ 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_CREATEDEVICEWINDOW)
     {
         /* Don't create a device window if a focus window is set */




More information about the wine-cvs mailing list