1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

fix EnumAttachedSurfaces

This commit is contained in:
FunkyFr3sh 2021-05-04 23:52:52 +02:00
parent ae4446becb
commit 55f23e9170

View File

@ -623,14 +623,23 @@ HRESULT dds_EnumAttachedSurfaces(IDirectDrawSurfaceImpl *This, LPVOID lpContext,
static DDSURFACEDESC dd_surface_desc; static DDSURFACEDESC dd_surface_desc;
memset(&dd_surface_desc, 0, sizeof(DDSURFACEDESC)); memset(&dd_surface_desc, 0, sizeof(DDSURFACEDESC));
dds_GetSurfaceDesc(This, &dd_surface_desc); if (This->backbuffer)
This->caps |= DDSCAPS_BACKBUFFER; // Nox hack {
lpEnumSurfacesCallback((LPDIRECTDRAWSURFACE)This, &dd_surface_desc, lpContext); dds_GetSurfaceDesc(This->backbuffer, &dd_surface_desc);
IDirectDrawSurface_AddRef(This->backbuffer);
lpEnumSurfacesCallback((LPDIRECTDRAWSURFACE)This->backbuffer, &dd_surface_desc, lpContext);
}
else if (!g_ddraw->backbuffer)
{
dds_GetSurfaceDesc(This, &dd_surface_desc);
This->caps |= DDSCAPS_BACKBUFFER; // Nox hack
lpEnumSurfacesCallback((LPDIRECTDRAWSURFACE)This, &dd_surface_desc, lpContext);
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && (This->caps & DDSCAPS_FLIP) && !(This->caps & DDSCAPS_BACKBUFFER)) if ((This->caps & DDSCAPS_PRIMARYSURFACE) && (This->caps & DDSCAPS_FLIP) && !(This->caps & DDSCAPS_BACKBUFFER))
IDirectDrawSurface_AddRef(This); IDirectDrawSurface_AddRef(This);
This->caps &= ~DDSCAPS_BACKBUFFER; This->caps &= ~DDSCAPS_BACKBUFFER;
}
return DD_OK; return DD_OK;
} }