H. Verbeet : wined3d: Properly handle the surface location in stretch_rect_fbo().

Alexandre Julliard julliard at winehq.org
Thu Jan 3 06:43:40 CST 2008


Module: wine
Branch: master
Commit: 3f6c3d2db0b77f44e711d1ee2e2416e2708ef3d1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3f6c3d2db0b77f44e711d1ee2e2416e2708ef3d1

Author: H. Verbeet <hverbeet at 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 {




More information about the wine-cvs mailing list