Module: wine Branch: master Commit: 3f6c3d2db0b77f44e711d1ee2e2416e2708ef3d1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3f6c3d2db0b77f44e711d1ee2e...
Author: H. Verbeet hverbeet@gmail.com Date: Wed Jan 2 19:53:24 2008 +0100
wined3d: Properly handle the surface location in stretch_rect_fbo().
---
dlls/wined3d/device.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 30f7b61..9d17498 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -6318,6 +6318,9 @@ void stretch_rect_fbo(IWineD3DDevice *iface, IWineD3DSurface *src_surface, WINED
TRACE("Source surface %p is onscreen\n", src_surface); ActivateContext(This, src_surface, CTXUSAGE_RESOURCELOAD); + /* Make sure the drawable is up to date. In the offscreen case + * attach_surface_fbo() implicitly takes care of this. */ + IWineD3DSurface_LoadLocation(src_surface, SFLAG_INDRAWABLE, NULL);
ENTER_GL(); GL_EXTCALL(glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, 0)); @@ -6344,6 +6347,9 @@ void stretch_rect_fbo(IWineD3DDevice *iface, IWineD3DSurface *src_surface, WINED
TRACE("Destination surface %p is onscreen\n", dst_surface); ActivateContext(This, dst_surface, CTXUSAGE_RESOURCELOAD); + /* Make sure the drawable is up to date. In the offscreen case + * attach_surface_fbo() implicitly takes care of this. */ + IWineD3DSurface_LoadLocation(dst_surface, SFLAG_INDRAWABLE, NULL);
ENTER_GL(); GL_EXTCALL(glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0)); @@ -6380,6 +6386,8 @@ void stretch_rect_fbo(IWineD3DDevice *iface, IWineD3DSurface *src_surface, WINED checkGLcall("glBlitFramebuffer()"); }
+ IWineD3DSurface_ModifyLocation(dst_surface, SFLAG_INDRAWABLE, TRUE); + if (This->render_offscreen) { bind_fbo(iface, GL_FRAMEBUFFER_EXT, &This->fbo); } else {