--- 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 {