mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +01:00
add support for DDSD_LPSURFACE and DDSD_PITCH
This commit is contained in:
parent
f39e3fcddb
commit
edf69fcc2a
@ -30,6 +30,7 @@ typedef struct IDirectDrawSurfaceImpl
|
|||||||
void* surface;
|
void* surface;
|
||||||
DWORD l_pitch;
|
DWORD l_pitch;
|
||||||
DWORD lx_pitch;
|
DWORD lx_pitch;
|
||||||
|
BOOL custom_surface;
|
||||||
|
|
||||||
PBITMAPINFO bmi;
|
PBITMAPINFO bmi;
|
||||||
HBITMAP bitmap;
|
HBITMAP bitmap;
|
||||||
|
@ -85,7 +85,7 @@ ULONG __stdcall IDirectDrawSurface__Release(IDirectDrawSurfaceImpl* This)
|
|||||||
{
|
{
|
||||||
DeleteObject(This->bitmap);
|
DeleteObject(This->bitmap);
|
||||||
}
|
}
|
||||||
else if (This->surface)
|
else if (This->surface && !This->custom_surface)
|
||||||
{
|
{
|
||||||
HeapFree(GetProcessHeap(), 0, This->surface);
|
HeapFree(GetProcessHeap(), 0, This->surface);
|
||||||
}
|
}
|
||||||
|
@ -596,7 +596,6 @@ HRESULT dds_GetAttachedSurface(IDirectDrawSurfaceImpl* This, LPDDSCAPS lpDdsCaps
|
|||||||
IDirectDrawSurface_AddRef(This);
|
IDirectDrawSurface_AddRef(This);
|
||||||
*lpDDsurface = This;
|
*lpDDsurface = This;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return DD_OK;
|
return DD_OK;
|
||||||
}
|
}
|
||||||
@ -1037,7 +1036,15 @@ HRESULT dd_CreateSurface(
|
|||||||
dst_surface->height = lpDDSurfaceDesc->dwHeight;
|
dst_surface->height = lpDDSurfaceDesc->dwHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dst_surface->width && dst_surface->height)
|
if ((dst_surface->flags & DDSD_LPSURFACE) && (dst_surface->flags & DDSD_PITCH))
|
||||||
|
{
|
||||||
|
dst_surface->surface = lpDDSurfaceDesc->lpSurface;
|
||||||
|
dst_surface->l_pitch = lpDDSurfaceDesc->lPitch;
|
||||||
|
dst_surface->lx_pitch = dst_surface->bpp / 8;
|
||||||
|
dst_surface->size = dst_surface->l_pitch * dst_surface->height;
|
||||||
|
dst_surface->custom_surface = TRUE;
|
||||||
|
}
|
||||||
|
else if (dst_surface->width && dst_surface->height)
|
||||||
{
|
{
|
||||||
dst_surface->lx_pitch = dst_surface->bpp / 8;
|
dst_surface->lx_pitch = dst_surface->bpp / 8;
|
||||||
dst_surface->l_pitch = ((dst_surface->width * dst_surface->bpp + 31) & ~31) >> 3;
|
dst_surface->l_pitch = ((dst_surface->width * dst_surface->bpp + 31) & ~31) >> 3;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user