From 650496065b937e9c1c9e8c6001f8af1f2fc42f2a Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Mon, 19 Nov 2018 09:56:27 +0100 Subject: [PATCH] add hack for westwood nox --- src/surface.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/surface.c b/src/surface.c index 11ebea9..6a4b7aa 100644 --- a/src/surface.c +++ b/src/surface.c @@ -626,9 +626,15 @@ HRESULT __stdcall ddraw_surface_EnumAttachedSurfaces(IDirectDrawSurfaceImpl *Thi static LPDDSURFACEDESC lpDDSurfaceDesc; lpDDSurfaceDesc = (LPDDSURFACEDESC)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DDSURFACEDESC)); ddraw_surface_GetSurfaceDesc(This, lpDDSurfaceDesc); + This->caps |= DDSCAPS_BACKBUFFER; // Nox hack lpEnumSurfacesCallback((LPDIRECTDRAWSURFACE)This, lpDDSurfaceDesc, lpContext); HeapFree(GetProcessHeap(), 0, lpDDSurfaceDesc); + if ((This->caps & DDSCAPS_PRIMARYSURFACE) && (This->caps & DDSCAPS_FLIP) && !(This->caps & DDSCAPS_BACKBUFFER)) + ddraw_surface_AddRef(This); + + This->caps &= ~DDSCAPS_BACKBUFFER; + return DD_OK; } @@ -675,7 +681,7 @@ HRESULT __stdcall ddraw_surface_GetAttachedSurface(IDirectDrawSurfaceImpl *This, if ((This->caps & DDSCAPS_PRIMARYSURFACE) && (This->caps & DDSCAPS_FLIP) && (lpDdsCaps->dwCaps & DDSCAPS_BACKBUFFER)) { - This->Ref++; + ddraw_surface_AddRef(This); *surface = (LPDIRECTDRAWSURFACE)This; }