Module: wine Branch: refs/heads/master Commit: e18b89aca7c478603fde25278e35b7ba572ad104 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=e18b89aca7c478603fde2527...
Author: Stefan Dösinger stefandoesinger@gmx.at Date: Sat Jun 24 12:32:18 2006 +0200
wined3d: Fix single buffering.
Tell gl to draw to the back buffer when a back buffer is used, do not use the value from gl.
---
dlls/wined3d/surface.c | 20 ++++++++------------ 1 files changed, 8 insertions(+), 12 deletions(-)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index 25a3e7a..da8f766 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -768,7 +768,6 @@ static HRESULT WINAPI IWineD3DSurfaceImp
if (backbuf || iface == implSwapChain->frontBuffer || iface == myDevice->renderTarget) { GLint prev_store; - GLint prev_draw; GLint prev_depth_test; GLint prev_rasterpos[4];
@@ -792,8 +791,6 @@ static HRESULT WINAPI IWineD3DSurfaceImp
glFlush(); vcheckGLcall("glFlush"); - glGetIntegerv(GL_DRAW_BUFFER, &prev_draw); - vcheckGLcall("glIntegerv"); glGetIntegerv(GL_PACK_SWAP_BYTES, &prev_store); vcheckGLcall("glIntegerv"); glGetIntegerv(GL_CURRENT_RASTER_POSITION, &prev_rasterpos[0]); @@ -920,8 +917,10 @@ static HRESULT WINAPI IWineD3DSurfaceImp
glPixelZoom(1.0,1.0); vcheckGLcall("glPixelZoom"); - glDrawBuffer(prev_draw); - vcheckGLcall("glDrawBuffer"); + if(implSwapChain->backBuffer && implSwapChain->backBuffer[0]) { + glDrawBuffer(GL_BACK); + vcheckGLcall("glDrawBuffer"); + } glRasterPos3iv(&prev_rasterpos[0]); vcheckGLcall("glRasterPos3iv"); if(prev_depth_test) glEnable(GL_DEPTH_TEST); @@ -2357,7 +2356,6 @@ static HRESULT IWineD3DSurfaceImpl_BltOv /* This is easy to handle for the D3D Device... */ DWORD color; IWineD3DSwapChainImpl *implSwapChain; - GLint prev_draw;
TRACE("Colorfill\n");
@@ -2396,10 +2394,6 @@ static HRESULT IWineD3DSurfaceImpl_BltOv return WINED3DERR_INVALIDCALL; }
- /* Are we drawing to the Front buffer or the back buffer? */ - glGetIntegerv(GL_DRAW_BUFFER, &prev_draw); - vcheckGLcall("glIntegerv"); - TRACE("Calling GetSwapChain with mydevice = %p\n", myDevice); IWineD3DDevice_GetSwapChain((IWineD3DDevice *)myDevice, 0, (IWineD3DSwapChain **)&implSwapChain); IWineD3DSwapChain_Release( (IWineD3DSwapChain *) implSwapChain ); @@ -2427,8 +2421,10 @@ static HRESULT IWineD3DSurfaceImpl_BltOv 0 /* Stencil */);
/* Restore the original draw buffer */ - glDrawBuffer(prev_draw); - vcheckGLcall("glDrawBuffer"); + if(implSwapChain->backBuffer && implSwapChain->backBuffer[0]) { + glDrawBuffer(GL_BACK); + vcheckGLcall("glDrawBuffer"); + }
return WINED3D_OK; }