[PATCH] DDraw: Send the ddraw output to the clipper window, if =

Stefan Doesinger stefan at codeweavers.com
Thu Aug 7 14:09:19 CDT 2008


any=0A=
=0A=
---=0A=
 dlls/ddraw/ddraw.c   |    2 +-=0A=
 dlls/ddraw/surface.c |   17 +++++++++++++++++=0A=
 2 files changed, 18 insertions(+), 1 deletions(-)=0A=
=0A=
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c=0A=
index 425503f..31dfd1d 100644=0A=
--- a/dlls/ddraw/ddraw.c=0A=
+++ b/dlls/ddraw/ddraw.c=0A=
@@ -3254,12 +3254,12 @@ IDirectDrawImpl_AttachD3DDevice(IDirectDrawImpl =
*This,=0A=
 =0A=
         ShowWindow(window, SW_HIDE);   /* Just to be sure */=0A=
         WARN("(%p) No window for the Direct3DDevice, created a hidden =
window. HWND=3D%p\n", This, window);=0A=
-        This->d3d_window =3D window;=0A=
     }=0A=
     else=0A=
     {=0A=
         TRACE("(%p) Using existing window %p for Direct3D rendering\n", =
This, window);=0A=
     }=0A=
+    This->d3d_window =3D window;=0A=
 =0A=
     /* Store the future Render Target surface */=0A=
     This->d3d_target =3D primary;=0A=
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c=0A=
index b4129b3..664229b 100644=0A=
--- a/dlls/ddraw/surface.c=0A=
+++ b/dlls/ddraw/surface.c=0A=
@@ -2210,6 +2210,7 @@ =
IDirectDrawSurfaceImpl_SetClipper(IDirectDrawSurface7 *iface,=0A=
 {=0A=
     ICOM_THIS_FROM(IDirectDrawSurfaceImpl, IDirectDrawSurface7, iface);=0A=
     IDirectDrawClipperImpl *oldClipper =3D This->clipper;=0A=
+    HWND clipWindow;=0A=
     HRESULT hr;=0A=
     TRACE("(%p)->(%p)\n",This,Clipper);=0A=
 =0A=
@@ -2228,6 +2229,22 @@ =
IDirectDrawSurfaceImpl_SetClipper(IDirectDrawSurface7 *iface,=0A=
         IDirectDrawClipper_Release(ICOM_INTERFACE(oldClipper, =
IDirectDrawClipper));=0A=
 =0A=
     hr =3D IWineD3DSurface_SetClipper(This->WineD3DSurface, =
This->clipper ? This->clipper->wineD3DClipper : NULL);=0A=
+=0A=
+    if(This->wineD3DSwapChain) {=0A=
+        clipWindow =3D NULL;=0A=
+        if(Clipper) {=0A=
+            IDirectDrawClipper_GetHWnd(Clipper, &clipWindow);=0A=
+        }=0A=
+=0A=
+        if(clipWindow) {=0A=
+            =
IWineD3DSwapChain_SetDestWindowOverride(This->wineD3DSwapChain,=0A=
+                                                    clipWindow);=0A=
+        } else {=0A=
+            =
IWineD3DSwapChain_SetDestWindowOverride(This->wineD3DSwapChain,=0A=
+                                                    =
This->ddraw->d3d_window);=0A=
+        }=0A=
+    }=0A=
+=0A=
     LeaveCriticalSection(&ddraw_cs);=0A=
     return hr;=0A=
 }=0A=
-- =0A=
1.5.4.5=0A=
=0A=

------=_NextPart_000_0005_01C90123.CE8ADD20--




More information about the wine-patches mailing list