HRESULT WINAPI
Main_DirectDraw_GetDisplayMode (
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPDDSURFACEDESC pDDSD);
+
+HRESULT WINAPI
+Main_DirectDraw_GetDisplayMode4 (
LPDDRAWI_DIRECTDRAW_INT This,
LPDDSURFACEDESC2 pDDSD);
DWORD CALLBACK HelDdSurfUnlock(LPDDHAL_UNLOCKDATA lpUnLockData);
DWORD CALLBACK HelDdSurfUpdateOverlay(LPDDHAL_UPDATEOVERLAYDATA lpUpDateOveryLayData);
+
}
}
- if (IsBadCodePtr(pCallback))
+ if (IsBadCodePtr((LPVOID)pCallback))
{
ret = DDERR_INVALIDPARAMS;
}
}
}
- if (IsBadCodePtr(pCallback))
+ if (IsBadCodePtr((LPVOID)pCallback))
{
ret = DDERR_INVALIDPARAMS;
}
DevMode.dmBitsPerPel = dwBPP;
DevMode.dmDisplayFrequency = dwRefreshRate;
- DX_WINDBG_trace_res(dwHeight, dwWidth, dwBPP, dwRefreshRate);
+ DX_WINDBG_trace_res(dwWidth, dwHeight,dwBPP, dwRefreshRate);
retval = ChangeDisplaySettings(&DevMode, CDS_FULLSCREEN);
/* FIXME: Are we supposed to set CDS_SET_PRIMARY as well ? */
}
HRESULT WINAPI
-Main_DirectDraw_GetDisplayMode (LPDDRAWI_DIRECTDRAW_INT This, LPDDSURFACEDESC2 pDDSD)
+Main_DirectDraw_GetDisplayMode (LPDDRAWI_DIRECTDRAW_INT This, LPDDSURFACEDESC pDDSD)
{
HRESULT retVal = DD_OK;
DX_WINDBG_trace();
_SEH_TRY
{
- if(IsBadWritePtr(pDDSD,sizeof(LPDWORD)))
+ if(IsBadWritePtr(pDDSD,sizeof(LPDDSURFACEDESC)))
+ {
+ retVal = DDERR_INVALIDPARAMS;
+ }
+ else if (pDDSD->dwSize != sizeof(DDSURFACEDESC))
+ {
+ retVal = DDERR_INVALIDPARAMS;
+ }
+ else
+ {
+ // FIXME: More stucture members might need to be filled
+
+ pDDSD->dwFlags |= DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT | DDSD_PITCH | DDSD_REFRESHRATE;
+ pDDSD->dwHeight = This->lpLcl->lpGbl->vmiData.dwDisplayHeight;
+ pDDSD->dwWidth = This->lpLcl->lpGbl->vmiData.dwDisplayWidth;
+ pDDSD->ddpfPixelFormat = This->lpLcl->lpGbl->vmiData.ddpfDisplay;
+ pDDSD->dwRefreshRate = This->lpLcl->lpGbl->dwMonitorFrequency;
+ pDDSD->lPitch = This->lpLcl->lpGbl->vmiData.lDisplayPitch;
+ }
+ }
+ _SEH_HANDLE
+ {
+ }
+ _SEH_END;
+
+ return retVal;
+}
+
+HRESULT WINAPI
+Main_DirectDraw_GetDisplayMode4 (LPDDRAWI_DIRECTDRAW_INT This, LPDDSURFACEDESC2 pDDSD)
+{
+ HRESULT retVal = DD_OK;
+ DX_WINDBG_trace();
+
+ _SEH_TRY
+ {
+ if(IsBadWritePtr(pDDSD,sizeof(LPDDSURFACEDESC2)))
{
retVal = DDERR_INVALIDPARAMS;
}
LPDDCAPS pHELCaps);
HRESULT WINAPI
-Main_DirectDraw_GetDisplayMode (
+Main_DirectDraw_GetDisplayMode4 (
LPDIRECTDRAW4 iface,
LPDDSURFACEDESC2 pDDSD);
Main_DirectDraw_EnumSurfaces,
Main_DirectDraw_FlipToGDISurface,
Main_DirectDraw_GetCaps,
- Main_DirectDraw_GetDisplayMode,
+ Main_DirectDraw_GetDisplayMode4,
Main_DirectDraw_GetFourCCCodes,
Main_DirectDraw_GetGDISurface,
Main_DirectDraw_GetMonitorFrequency,
LPDDCAPS pHELCaps);
HRESULT WINAPI
-Main_DirectDraw_GetDisplayMode (
+Main_DirectDraw_GetDisplayMode4 (
LPDIRECTDRAW7 iface,
LPDDSURFACEDESC2 pDDSD);
Main_DirectDraw_EnumSurfaces,
Main_DirectDraw_FlipToGDISurface,
Main_DirectDraw_GetCaps, /* (GetCaps done) */
- Main_DirectDraw_GetDisplayMode, /* (GetDisplayMode testing / devloping) */
+ Main_DirectDraw_GetDisplayMode4, /* (GetDisplayMode testing / devloping) */
Main_DirectDraw_GetFourCCCodes, /* (GetFourCCCodes done) */
Main_DirectDraw_GetGDISurface,
Main_DirectDraw_GetMonitorFrequency, /* (GetMonitorFrequency done) */
Main_DirectDraw_EvaluateMode
};
+