[PATCH 3/5] wined3d: Let the context handle the draw buffer in flush_to_framebuffer_drawpixels().
Henri Verbeet
hverbeet at codeweavers.com
Sun Dec 13 15:03:59 CST 2009
---
dlls/wined3d/surface.c | 27 +++++++--------------------
1 files changed, 7 insertions(+), 20 deletions(-)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 3d2a337..6c8bb36 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -1435,16 +1435,15 @@ static void flush_to_framebuffer_drawpixels(IWineD3DSurfaceImpl *This, GLenum fm
if (SUCCEEDED(IWineD3DSurface_GetContainer((IWineD3DSurface *)This, &IID_IWineD3DSwapChain, (void **)&swapchain))) {
GLenum buffer = surface_get_gl_buffer((IWineD3DSurface *) This, (IWineD3DSwapChain *)swapchain);
- TRACE("Unlocking %#x buffer\n", buffer);
- glDrawBuffer(buffer);
- checkGLcall("glDrawBuffer");
-
IWineD3DSwapChain_Release((IWineD3DSwapChain *)swapchain);
- } else {
+ TRACE("Unlocking %#x buffer.\n", buffer);
+ context_set_draw_buffer(context, buffer);
+ }
+ else
+ {
/* Primary offscreen render target */
- TRACE("Offscreen render target\n");
- glDrawBuffer(myDevice->offscreenBuffer);
- checkGLcall("glDrawBuffer(myDevice->offscreenBuffer)");
+ TRACE("Offscreen render target.\n");
+ context_set_draw_buffer(context, myDevice->offscreenBuffer);
}
glGetIntegerv(GL_PACK_SWAP_BYTES, &prev_store);
@@ -1511,20 +1510,8 @@ static void flush_to_framebuffer_drawpixels(IWineD3DSurfaceImpl *This, GLenum fm
glPixelStorei(GL_UNPACK_ROW_LENGTH, skipBytes);
checkGLcall("glPixelStorei(GL_UNPACK_ROW_LENGTH)");
- if(!swapchain) {
- glDrawBuffer(myDevice->offscreenBuffer);
- checkGLcall("glDrawBuffer(myDevice->offscreenBuffer)");
- } else if(swapchain->backBuffer) {
- glDrawBuffer(GL_BACK);
- checkGLcall("glDrawBuffer(GL_BACK)");
- } else {
- glDrawBuffer(GL_FRONT);
- checkGLcall("glDrawBuffer(GL_FRONT)");
- }
LEAVE_GL();
context_release(context);
-
- return;
}
static HRESULT WINAPI IWineD3DSurfaceImpl_UnlockRect(IWineD3DSurface *iface) {
--
1.6.4.4
More information about the wine-patches
mailing list