From 4bdd4ef45ba59e7add4f611ca67ab5995d7bf85b Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Mon, 1 Aug 2011 21:35:43 +0200 Subject: [PATCH] wined3d: Check for locked surfaces in wined3d_surface_blt(). --- dlls/wined3d/surface.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index 617704eff2a..beafa3ad035 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -1293,12 +1293,6 @@ static HRESULT surface_blt(struct wined3d_surface *dst_surface, const RECT *dst_ flags, fx, debug_d3dtexturefiltertype(filter)); TRACE("Usage is %s.\n", debug_d3dusage(dst_surface->resource.usage)); - if ((dst_surface->flags & SFLAG_LOCKED) || (src_surface && (src_surface->flags & SFLAG_LOCKED))) - { - WARN(" Surface is busy, returning DDERR_SURFACEBUSY\n"); - return WINEDDERR_SURFACEBUSY; - } - dst_ds_flags = dst_surface->resource.format->flags & (WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL); if (src_surface) src_ds_flags = src_surface->resource.format->flags & (WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL); @@ -3412,6 +3406,12 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC dst_surface, wine_dbgstr_rect(dst_rect_in), src_surface, wine_dbgstr_rect(src_rect_in), flags, fx, debug_d3dtexturefiltertype(filter)); + if ((dst_surface->flags & SFLAG_LOCKED) || (src_surface && (src_surface->flags & SFLAG_LOCKED))) + { + WARN("Surface is busy, returning WINEDDERR_SURFACEBUSY.\n"); + return WINEDDERR_SURFACEBUSY; + } + surface_get_rect(dst_surface, dst_rect_in, &dst_rect); if (src_surface) surface_get_rect(src_surface, src_rect_in, &src_rect); @@ -6439,12 +6439,6 @@ static HRESULT surface_cpu_blt(struct wined3d_surface *dst_surface, const RECT * dst_surface, wine_dbgstr_rect(dst_rect), src_surface, wine_dbgstr_rect(src_rect), flags, fx, debug_d3dtexturefiltertype(filter)); - if ((dst_surface->flags & SFLAG_LOCKED) || (src_surface && (src_surface->flags & SFLAG_LOCKED))) - { - WARN("Surface is busy, returning WINEDDERR_SURFACEBUSY\n"); - return WINEDDERR_SURFACEBUSY; - } - /* First check for the validity of source / destination rectangles. * This was verified using a test application and by MSDN. */ if (src_rect)