[07/10] wined3d: Use surface_get_gl_buffer where appropriate
H. Verbeet
hverbeet at gmail.com
Mon Apr 16 14:20:32 CDT 2007
Changelog:
- Use surface_get_gl_buffer where appropriate
-------------- next part --------------
---
dlls/wined3d/surface.c | 52 +++++++++++++++---------------------------------
1 files changed, 16 insertions(+), 36 deletions(-)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 049b827..4067ac8 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -809,19 +809,11 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LockRect(IWineD3DSurface *iface, WINED
glReadBuffer(myDevice->offscreenBuffer);
srcIsUpsideDown = TRUE;
} else {
- if(iface == swapchain->frontBuffer) {
- TRACE("Locking the front buffer\n");
- glReadBuffer(GL_FRONT);
- } else if(swapchain->backBuffer && iface == swapchain->backBuffer[0]) {
- TRACE("Locking the back buffer\n");
- glReadBuffer(GL_BACK);
- } else {
- /* Ok, there is an issue: OpenGL does not guarant any back buffer number, so all we can do is to read GL_BACK
- * and hope it gives what the app wants
- */
- FIXME("Application is locking a 2nd or higher back buffer\n");
- glReadBuffer(GL_BACK);
- }
+ GLenum buffer = surface_get_gl_buffer(iface, (IWineD3DSwapChain *)swapchain);
+ TRACE("Locking %#x buffer\n", buffer);
+ glReadBuffer(buffer);
+ checkGLcall("glReadBuffer");
+
IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain);
srcIsUpsideDown = FALSE;
}
@@ -1207,19 +1199,11 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_UnlockRect(IWineD3DSurface *iface) {
glDrawBuffer(myDevice->offscreenBuffer);
checkGLcall("glDrawBuffer(myDevice->offscreenBuffer)");
} else {
- if(iface == swapchain->frontBuffer) {
- TRACE("Onscreen front buffer\n");
- glDrawBuffer(GL_FRONT);
- checkGLcall("glDrawBuffer(GL_FRONT)");
- } else if(iface == swapchain->backBuffer[0]) {
- TRACE("Onscreen back buffer\n");
- glDrawBuffer(GL_BACK);
- checkGLcall("glDrawBuffer(GL_BACK)");
- } else {
- FIXME("Unlocking a higher back buffer\n");
- glDrawBuffer(GL_BACK);
- checkGLcall("glDrawBuffer(GL_BACK)");
- }
+ GLenum buffer = surface_get_gl_buffer(iface, (IWineD3DSwapChain *)swapchain);
+ TRACE("Unlocking %#x buffer\n", buffer);
+ glDrawBuffer(buffer);
+ checkGLcall("glDrawBuffer");
+
IWineD3DSwapChain_Release((IWineD3DSwapChain *)swapchain);
}
@@ -2364,10 +2348,9 @@ static inline void fb_copy_to_texture_direct(IWineD3DSurfaceImpl *This, IWineD3D
checkGLcall("glBindTexture");
if(!swapchain) {
glReadBuffer(myDevice->offscreenBuffer);
- } else if(swapchain->backBuffer && SrcSurface == swapchain->backBuffer[0]) {
- glReadBuffer(GL_BACK);
} else {
- glReadBuffer(GL_FRONT);
+ GLenum buffer = surface_get_gl_buffer(SrcSurface, (IWineD3DSwapChain *)swapchain);
+ glReadBuffer(buffer);
}
checkGLcall("glReadBuffer");
@@ -2877,14 +2860,11 @@ static HRESULT IWineD3DSurfaceImpl_BltOverride(IWineD3DSurfaceImpl *This, RECT *
if(!dstSwapchain) {
TRACE("Drawing to offscreen buffer\n");
glDrawBuffer(myDevice->offscreenBuffer);
- } else if(This == (IWineD3DSurfaceImpl *) dstSwapchain->frontBuffer) {
- TRACE("Drawing to front buffer\n");
- glDrawBuffer(GL_FRONT);
- checkGLcall("glDrawBuffer GL_FRONT");
} else {
- TRACE("Drawing to back buffer\n");
- glDrawBuffer(GL_BACK);
- checkGLcall("glDrawBuffer GL_BACK");
+ GLenum buffer = surface_get_gl_buffer((IWineD3DSurface *)This, (IWineD3DSwapChain *)dstSwapchain);
+ TRACE("Drawing to %#x buffer\n", buffer);
+ glDrawBuffer(buffer);
+ checkGLcall("glDrawBuffer");
}
/* Bind the texture */
More information about the wine-patches
mailing list