Bugfix : hal lock surface so it does not crash any longer

svn path=/trunk/; revision=21574
This commit is contained in:
Magnus Olsen 2006-04-13 06:38:52 +00:00
parent becc8a8d30
commit e55cbd36de

View file

@ -132,11 +132,24 @@ HRESULT Hal_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURF
} }
// FIXME ??? is this right ?? // FIXME ??? is this right ??
RtlZeroMemory(pDDSD,sizeof(DDSURFACEDESC2)); if (pDDSD != NULL)
memcpy(pDDSD,&This->Surf->mddsdPrimary,sizeof(DDSURFACEDESC)); {
pDDSD->dwSize = sizeof(DDSURFACEDESC2); if (pDDSD->dwSize == sizeof(DDSURFACEDESC2))
{
RtlZeroMemory(pDDSD,sizeof(DDSURFACEDESC2));
// FIXME the interanl mddsdPrimary shall be DDSURFACEDESC2
memcpy(pDDSD,&This->Surf->mddsdPrimary,sizeof(DDSURFACEDESC));
pDDSD->dwSize = sizeof(DDSURFACEDESC2);
}
if (pDDSD->dwSize == sizeof(DDSURFACEDESC))
{
RtlZeroMemory(pDDSD,sizeof(DDSURFACEDESC));
memcpy(pDDSD,&This->Surf->mddsdPrimary,sizeof(DDSURFACEDESC));
pDDSD->dwSize = sizeof(DDSURFACEDESC);
}
pDDSD->lpSurface = (LPVOID) Lock.lpSurfData; pDDSD->lpSurface = (LPVOID) Lock.lpSurfData;
}
return DD_OK; return DD_OK;
} }