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

fix DeleteAttachedSurface and add some NULL checks

This commit is contained in:
FunkyFr3sh 2021-05-06 01:24:07 +02:00
parent 442b6c3f57
commit 63c4e6ff57

View File

@ -14,14 +14,17 @@
HRESULT dds_AddAttachedSurface(IDirectDrawSurfaceImpl *This, LPDIRECTDRAWSURFACE lpDDSurface) HRESULT dds_AddAttachedSurface(IDirectDrawSurfaceImpl *This, LPDIRECTDRAWSURFACE lpDDSurface)
{ {
IDirectDrawSurface_AddRef(lpDDSurface); if (lpDDSurface)
if (g_ddraw->backbuffer && !This->backbuffer)
{ {
IDirectDrawSurfaceImpl* surface = (IDirectDrawSurfaceImpl*)lpDDSurface; IDirectDrawSurface_AddRef(lpDDSurface);
surface->caps |= DDSCAPS_BACKBUFFER;
This->backbuffer = surface; if (g_ddraw->backbuffer && !This->backbuffer)
{
IDirectDrawSurfaceImpl* surface = (IDirectDrawSurfaceImpl*)lpDDSurface;
surface->caps |= DDSCAPS_BACKBUFFER;
This->backbuffer = surface;
}
} }
return DD_OK; return DD_OK;
@ -611,7 +614,12 @@ HRESULT dds_BltFast(IDirectDrawSurfaceImpl *This, DWORD dst_x, DWORD dst_y, LPDI
HRESULT dds_DeleteAttachedSurface(IDirectDrawSurfaceImpl *This, DWORD dwFlags, LPDIRECTDRAWSURFACE lpDDSurface) HRESULT dds_DeleteAttachedSurface(IDirectDrawSurfaceImpl *This, DWORD dwFlags, LPDIRECTDRAWSURFACE lpDDSurface)
{ {
IDirectDrawSurface_Release(lpDDSurface); if (lpDDSurface)
{
IDirectDrawSurface_Release(lpDDSurface);
This->backbuffer = NULL;
}
return DD_OK; return DD_OK;
} }