Stefan Dösinger : ddraw: Send the ddraw output to the clipper window, if any.
Alexandre Julliard
julliard at winehq.org
Tue Aug 19 08:46:29 CDT 2008
Module: wine
Branch: master
Commit: c1bbab7c54618935d74b7d2b70421253018f5594
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c1bbab7c54618935d74b7d2b70421253018f5594
Author: Stefan Dösinger <stefan at codeweavers.com>
Date: Thu Aug 7 14:09:19 2008 -0500
ddraw: Send the ddraw output to the clipper window, if any.
---
dlls/ddraw/ddraw.c | 2 +-
dlls/ddraw/surface.c | 17 +++++++++++++++++
2 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 425503f..31dfd1d 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -3254,12 +3254,12 @@ IDirectDrawImpl_AttachD3DDevice(IDirectDrawImpl *This,
ShowWindow(window, SW_HIDE); /* Just to be sure */
WARN("(%p) No window for the Direct3DDevice, created a hidden window. HWND=%p\n", This, window);
- This->d3d_window = window;
}
else
{
TRACE("(%p) Using existing window %p for Direct3D rendering\n", This, window);
}
+ This->d3d_window = window;
/* Store the future Render Target surface */
This->d3d_target = primary;
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index b4129b3..664229b 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -2210,6 +2210,7 @@ IDirectDrawSurfaceImpl_SetClipper(IDirectDrawSurface7 *iface,
{
ICOM_THIS_FROM(IDirectDrawSurfaceImpl, IDirectDrawSurface7, iface);
IDirectDrawClipperImpl *oldClipper = This->clipper;
+ HWND clipWindow;
HRESULT hr;
TRACE("(%p)->(%p)\n",This,Clipper);
@@ -2228,6 +2229,22 @@ IDirectDrawSurfaceImpl_SetClipper(IDirectDrawSurface7 *iface,
IDirectDrawClipper_Release(ICOM_INTERFACE(oldClipper, IDirectDrawClipper));
hr = IWineD3DSurface_SetClipper(This->WineD3DSurface, This->clipper ? This->clipper->wineD3DClipper : NULL);
+
+ if(This->wineD3DSwapChain) {
+ clipWindow = NULL;
+ if(Clipper) {
+ IDirectDrawClipper_GetHWnd(Clipper, &clipWindow);
+ }
+
+ if(clipWindow) {
+ IWineD3DSwapChain_SetDestWindowOverride(This->wineD3DSwapChain,
+ clipWindow);
+ } else {
+ IWineD3DSwapChain_SetDestWindowOverride(This->wineD3DSwapChain,
+ This->ddraw->d3d_window);
+ }
+ }
+
LeaveCriticalSection(&ddraw_cs);
return hr;
}
More information about the wine-cvs
mailing list