Module: wine Branch: master Commit: 379f4009903a63ee6f5a6c47603c7b958e906042 URL: http://source.winehq.org/git/wine.git/?a=commit;h=379f4009903a63ee6f5a6c4760...
Author: Alexander Dorofeyev alexd4@inbox.lv Date: Sun Aug 31 17:05:26 2008 +0300
wined3d: Add glFlush when clearing the front buffer in ClearSurface.
---
dlls/wined3d/device.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 609b77f..2085b07 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -4995,6 +4995,7 @@ HRESULT IWineD3DDeviceImpl_ClearSurface(IWineD3DDeviceImpl *This, IWineD3DSurfa WINED3DVIEWPORT *vp = &This->stateBlock->viewport; UINT drawable_width, drawable_height; IWineD3DSurfaceImpl *depth_stencil = (IWineD3DSurfaceImpl *) This->stencilBufferTarget; + IWineD3DSwapChainImpl *swapchain = NULL;
/* When we're clearing parts of the drawable, make sure that the target surface is well up to date in the * drawable. After the clear we'll mark the drawable up to date, so we have to make sure that this is true @@ -5164,6 +5165,14 @@ HRESULT IWineD3DDeviceImpl_ClearSurface(IWineD3DDeviceImpl *This, IWineD3DSurfa
LEAVE_GL();
+ IWineD3DSurface_GetContainer( (IWineD3DSurface *) target, &IID_IWineD3DSwapChain, (void **)&swapchain); + if (swapchain) { + if (target == (IWineD3DSurfaceImpl*) swapchain->frontBuffer) { + glFlush(); + } + IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain); + } + return WINED3D_OK; }