Module: wine Branch: master Commit: c1bbab7c54618935d74b7d2b70421253018f5594 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c1bbab7c54618935d74b7d2b70...
Author: Stefan Dösinger stefan@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; }