From 38abddca68c2cb7ef8ed35bc2332a2f3baa15a1e Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Thu, 27 Oct 2011 17:06:24 +0200 Subject: [PATCH] ddraw: Only update primary_lock when we're actually locking the frontbuffer. This fixes a regression introduced by commit 8330558e125c9073068ffbd7741f1128c17c1e08. --- dlls/ddraw/surface.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index de321034029..9f85153dc8b 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -972,12 +972,15 @@ static HRESULT surface_lock(IDirectDrawSurfaceImpl *This, } } - if (Flags & DDLOCK_READONLY) - memset(&This->ddraw->primary_lock, 0, sizeof(This->ddraw->primary_lock)); - else if (Rect) - This->ddraw->primary_lock = *Rect; - else - SetRect(&This->ddraw->primary_lock, 0, 0, This->surface_desc.dwWidth, This->surface_desc.dwHeight); + if (This->surface_desc.ddsCaps.dwCaps & DDSCAPS_FRONTBUFFER) + { + if (Flags & DDLOCK_READONLY) + memset(&This->ddraw->primary_lock, 0, sizeof(This->ddraw->primary_lock)); + else if (Rect) + This->ddraw->primary_lock = *Rect; + else + SetRect(&This->ddraw->primary_lock, 0, 0, This->surface_desc.dwWidth, This->surface_desc.dwHeight); + } /* Override the memory area. The pitch should be set already. Strangely windows * does not set the LPSURFACE flag on locked surfaces !?!.