Stefan Dösinger : ddraw: Send the ddraw output to the clipper window, if any.
Module: wine Branch: master Commit: c1bbab7c54618935d74b7d2b70421253018f5594 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c1bbab7c54618935d74b7d2b70... Author: Stefan Dösinger <stefan(a)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; }
participants (1)
-
Alexandre Julliard