Module: wine Branch: master Commit: 4ada8a5e26723e25c646b3590f23381ff1ffa0e3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4ada8a5e26723e25c646b3590f...
Author: Karsten Elfenbein kelfe@gmx.de Date: Thu Oct 19 19:13:14 2006 +0200
wined3d: Fix the FrontBuffer content capturing.
---
dlls/wined3d/swapchain.c | 32 +++++++++----------------------- 1 files changed, 9 insertions(+), 23 deletions(-)
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index b0bc657..287153d 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -428,34 +428,20 @@ #endif
static HRESULT WINAPI IWineD3DSwapChainImpl_GetFrontBufferData(IWineD3DSwapChain *iface, IWineD3DSurface *pDestSurface) { IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface; - WINED3DFORMAT d3dformat; - UINT width; - UINT height; - WINED3DSURFACE_DESC desc; - glDescriptor *glDescription; + POINT start;
TRACE("(%p) : iface(%p) pDestSurface(%p)\n", This, iface, pDestSurface); - ENTER_GL(); - memset(&desc, 0, sizeof(desc)); - desc.Width = &width; - desc.Height = &height; - desc.Format = &d3dformat; + + start.x = 0; + start.y = 0; + + if (This->presentParms.Windowed) { + MapWindowPoints(This->win_handle, NULL, &start, 1); + } #if 0 /* TODO: make sure that this swapchains context is active */ IWineD3DDevice_ActivateSwapChainContext(This->wineD3DDevice, iface); #endif - IWineD3DSurface_GetDesc(pDestSurface, &desc); - /* make sure that the front buffer is the active read buffer */ - glReadBuffer(GL_FRONT); - /* Read the pixels from the buffer into the surfaces memory */ - IWineD3DSurface_GetGlDesc(pDestSurface, &glDescription); - glReadPixels(glDescription->target, - glDescription->level, - width, - height, - glDescription->glFormat, - glDescription->glType, - (void *)IWineD3DSurface_GetData(pDestSurface)); - LEAVE_GL(); + IWineD3DSurface_BltFast(pDestSurface, start.x, start.y, This->frontBuffer, NULL, 0); return WINED3D_OK; }