Implement full support for GetPixelFormat

svn path=/trunk/; revision=25153
This commit is contained in:
Magnus Olsen 2006-12-14 08:22:17 +00:00
parent ac78b1e624
commit fc31996a7d
2 changed files with 19 additions and 5 deletions

View file

@ -286,6 +286,7 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE
* in startup and do a cache of it
* to save time ??
*/
mDdCanCreateSurface.lpDD = This->lpLcl->lpGbl;
mDdCanCreateSurface.bIsDifferentPixelFormat = FALSE; //isDifferentPixelFormat;
@ -301,11 +302,18 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE
mDdCreateSurface.lplpSList = That->lpLcl->lpSurfMore->slist;
/* setup DDSD */
if (pDDSD->dwFlags & DDSD_PIXELFORMAT)
{
That->lpLcl->dwFlags |= DDRAWISURF_HASPIXELFORMAT;
memcpy(&That->lpLcl->lpGbl->ddpfSurface,&pDDSD->ddpfPixelFormat, sizeof(DDPIXELFORMAT));
}
/* Create the surface */
if (pDDSD->ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE)
{
This->lpLcl->lpPrimary = That;
if (mDdCanCreateSurface.CanCreateSurface(&mDdCanCreateSurface)== DDHAL_DRIVER_NOTHANDLED)
{
return DDERR_NOTINITIALIZED;

View file

@ -540,21 +540,27 @@ Main_DDrawSurface_GetPalette(LPDIRECTDRAWSURFACE7 iface,
HRESULT WINAPI
Main_DDrawSurface_GetPixelFormat(LPDIRECTDRAWSURFACE7 iface,
LPDDPIXELFORMAT pDDPixelFormat)
LPDDPIXELFORMAT pDDPixelFormat)
{
LPDDRAWI_DDRAWSURFACE_INT This = (LPDDRAWI_DDRAWSURFACE_INT)iface;
HRESULT retVale = DDERR_INVALIDPARAMS;
DX_WINDBG_trace();
/* FIXME is this right ?? */
if (pDDPixelFormat != NULL)
{
memcpy(pDDPixelFormat,&This->lpLcl->lpSurfMore->
if (This->lpLcl->dwFlags & DDRAWISURF_HASPIXELFORMAT)
{
memcpy(pDDPixelFormat,&This->lpLcl->lpGbl->ddpfSurface,sizeof(DDPIXELFORMAT));
}
else
{
memcpy(pDDPixelFormat,&This->lpLcl->lpSurfMore->
lpDD_lcl->lpGbl->vmiData.ddpfDisplay,sizeof(DDPIXELFORMAT));
}
retVale = DD_OK;
}
return retVale;
}