From d366559506e11337451c6ffdd8a53a1d1c410235 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Fri, 24 Mar 2023 07:45:21 +0100 Subject: [PATCH] #212 add temp hack for baldr force exe --- inc/IDirectDrawSurface.h | 1 + src/IDirectDraw/IDirectDrawSurface.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/inc/IDirectDrawSurface.h b/inc/IDirectDrawSurface.h index 59d58fc..5c1a26d 100644 --- a/inc/IDirectDrawSurface.h +++ b/inc/IDirectDrawSurface.h @@ -41,6 +41,7 @@ typedef struct IDirectDrawSurfaceImpl DDCOLORKEY color_key; DWORD last_flip_tick; DWORD last_blt_tick; + BOOL queried; struct IDirectDrawSurfaceImpl* backbuffer; struct IDirectDrawClipperImpl* clipper; diff --git a/src/IDirectDraw/IDirectDrawSurface.c b/src/IDirectDraw/IDirectDrawSurface.c index 8339a2b..98408ff 100644 --- a/src/IDirectDraw/IDirectDrawSurface.c +++ b/src/IDirectDraw/IDirectDrawSurface.c @@ -23,6 +23,8 @@ HRESULT __stdcall IDirectDrawSurface__QueryInterface(IDirectDrawSurfaceImpl* Thi IDirectDrawSurface_AddRef(This); + This->queried = TRUE; /* Hack for Baldr Force exe */ + *ppvObj = This; ret = S_OK; @@ -70,6 +72,12 @@ ULONG __stdcall IDirectDrawSurface__Release(IDirectDrawSurfaceImpl* This) ULONG ret = --This->ref; + if (This->queried && ret == 1) /* Hack for Baldr Force exe */ + { + This->queried = FALSE; + ret = 0; + } + if (This->ref == 0) { TRACE(" Released (%p)\n", This);