Stefan Dösinger : wined3d: Fix single buffering.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jun 26 07:11:58 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: e18b89aca7c478603fde25278e35b7ba572ad104
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=e18b89aca7c478603fde25278e35b7ba572ad104
Author: Stefan Dösinger <stefandoesinger at 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;
}
More information about the wine-cvs
mailing list