mirror of
https://github.com/reactos/reactos.git
synced 2024-12-26 00:54:40 +00:00
Some cosmetic changes like replacing tabs with spaces and grouping all stubs together.
svn path=/trunk/; revision=18925
This commit is contained in:
parent
e72a06483d
commit
abdfa2a93b
2 changed files with 610 additions and 640 deletions
|
@ -15,317 +15,296 @@ HRESULT Hal_DirectDraw_Initialize (LPDIRECTDRAW7 iface)
|
|||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
/* point to it self */
|
||||
This->DirectDrawGlobal.lp16DD = &This->DirectDrawGlobal;
|
||||
/* point to it self */
|
||||
This->DirectDrawGlobal.lp16DD = &This->DirectDrawGlobal;
|
||||
|
||||
/* get the object */
|
||||
if(!DdCreateDirectDrawObject (&This->DirectDrawGlobal, This->hdc))
|
||||
return DDERR_INVALIDPARAMS;
|
||||
/* get the object */
|
||||
if(!DdCreateDirectDrawObject (&This->DirectDrawGlobal, This->hdc))
|
||||
return DDERR_INVALIDPARAMS;
|
||||
|
||||
|
||||
/* alloc all the space */
|
||||
This->DirectDrawGlobal.lpDDCBtmp = (LPDDHAL_CALLBACKS)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DDHAL_CALLBACKS));
|
||||
|
||||
/* alloc all the space */
|
||||
This->DirectDrawGlobal.lpDDCBtmp = (LPDDHAL_CALLBACKS)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DDHAL_CALLBACKS));
|
||||
|
||||
This->DirectDrawGlobal.lpD3DHALCallbacks = (ULONG_PTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,
|
||||
sizeof(D3DHAL_CALLBACKS));
|
||||
This->DirectDrawGlobal.lpD3DHALCallbacks = (ULONG_PTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,
|
||||
sizeof(D3DHAL_CALLBACKS));
|
||||
|
||||
This->DirectDrawGlobal.lpD3DGlobalDriverData = (ULONG_PTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(D3DHAL_GLOBALDRIVERDATA));
|
||||
|
||||
/* Fill in some info */
|
||||
This->HalInfo.lpD3DGlobalDriverData = This->DirectDrawGlobal.lpD3DGlobalDriverData;
|
||||
This->HalInfo.lpD3DHALCallbacks = This->DirectDrawGlobal.lpD3DHALCallbacks;
|
||||
This->HalInfo.lpDDCallbacks = &This->DirectDrawGlobal.lpDDCBtmp->HALDD;
|
||||
This->HalInfo.lpDDExeBufCallbacks = &This->DirectDrawGlobal.lpDDCBtmp->HALDDExeBuf;
|
||||
This->HalInfo.lpDDPaletteCallbacks = &This->DirectDrawGlobal.lpDDCBtmp->HALDDPalette;
|
||||
This->HalInfo.lpDDSurfaceCallbacks = &This->DirectDrawGlobal.lpDDCBtmp->HALDDSurface;
|
||||
|
||||
/* query all kinds of infos from the driver */
|
||||
if(!DdQueryDirectDrawObject (
|
||||
&This->DirectDrawGlobal,
|
||||
&This->HalInfo,
|
||||
This->HalInfo.lpDDCallbacks,
|
||||
This->HalInfo.lpDDSurfaceCallbacks,
|
||||
This->HalInfo.lpDDPaletteCallbacks,
|
||||
(LPD3DHAL_CALLBACKS)This->DirectDrawGlobal.lpD3DHALCallbacks,
|
||||
(LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData,
|
||||
This->HalInfo.lpDDExeBufCallbacks,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL ))
|
||||
{
|
||||
return DD_FALSE;
|
||||
}
|
||||
|
||||
This->HalInfo.vmiData.pvmList = (LPVIDMEM) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(VIDMEM) * This->HalInfo.vmiData.dwNumHeaps);
|
||||
This->DirectDrawGlobal.lpD3DGlobalDriverData = (ULONG_PTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(D3DHAL_GLOBALDRIVERDATA));
|
||||
|
||||
/* Fill in some info */
|
||||
This->HalInfo.lpD3DGlobalDriverData = This->DirectDrawGlobal.lpD3DGlobalDriverData;
|
||||
This->HalInfo.lpD3DHALCallbacks = This->DirectDrawGlobal.lpD3DHALCallbacks;
|
||||
This->HalInfo.lpDDCallbacks = &This->DirectDrawGlobal.lpDDCBtmp->HALDD;
|
||||
This->HalInfo.lpDDExeBufCallbacks = &This->DirectDrawGlobal.lpDDCBtmp->HALDDExeBuf;
|
||||
This->HalInfo.lpDDPaletteCallbacks = &This->DirectDrawGlobal.lpDDCBtmp->HALDDPalette;
|
||||
This->HalInfo.lpDDSurfaceCallbacks = &This->DirectDrawGlobal.lpDDCBtmp->HALDDSurface;
|
||||
|
||||
/* query all kinds of infos from the driver */
|
||||
if(!DdQueryDirectDrawObject (
|
||||
&This->DirectDrawGlobal,
|
||||
&This->HalInfo,
|
||||
This->HalInfo.lpDDCallbacks,
|
||||
This->HalInfo.lpDDSurfaceCallbacks,
|
||||
This->HalInfo.lpDDPaletteCallbacks,
|
||||
(LPD3DHAL_CALLBACKS)This->DirectDrawGlobal.lpD3DHALCallbacks,
|
||||
(LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData,
|
||||
This->HalInfo.lpDDExeBufCallbacks,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL ))
|
||||
{
|
||||
return DD_FALSE;
|
||||
}
|
||||
|
||||
This->HalInfo.vmiData.pvmList = (LPVIDMEM) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(VIDMEM) * This->HalInfo.vmiData.dwNumHeaps);
|
||||
|
||||
This->DirectDrawGlobal.lpdwFourCC = (DWORD *) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DWORD) * This->HalInfo.ddCaps.dwNumFourCCCodes);
|
||||
((LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData)->lpTextureFormats =
|
||||
(LPDDSURFACEDESC) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DDSURFACEDESC) *
|
||||
((LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData)->dwNumTextureFormats);
|
||||
This->DirectDrawGlobal.lpdwFourCC = (DWORD *) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DWORD) * This->HalInfo.ddCaps.dwNumFourCCCodes);
|
||||
((LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData)->lpTextureFormats =
|
||||
(LPDDSURFACEDESC) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DDSURFACEDESC) *
|
||||
((LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData)->dwNumTextureFormats);
|
||||
|
||||
if(!DdQueryDirectDrawObject (
|
||||
&This->DirectDrawGlobal,
|
||||
&This->HalInfo,
|
||||
This->HalInfo.lpDDCallbacks,
|
||||
This->HalInfo.lpDDSurfaceCallbacks,
|
||||
This->HalInfo.lpDDPaletteCallbacks,
|
||||
(LPD3DHAL_CALLBACKS)This->DirectDrawGlobal.lpD3DHALCallbacks,
|
||||
(LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData,
|
||||
This->HalInfo.lpDDExeBufCallbacks,
|
||||
((LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData)->lpTextureFormats,
|
||||
This->DirectDrawGlobal.lpdwFourCC,
|
||||
This->HalInfo.vmiData.pvmList
|
||||
))
|
||||
{
|
||||
return DD_FALSE;
|
||||
}
|
||||
|
||||
/* Copy HalInfo to DirectDrawGlobal (Not complete)*/
|
||||
|
||||
RtlCopyMemory(&This->DirectDrawGlobal.vmiData,&This->HalInfo.vmiData,sizeof(VIDMEMINFO));
|
||||
RtlCopyMemory(&This->DirectDrawGlobal.ddCaps,&This->HalInfo.ddCaps,sizeof(DDCORECAPS));
|
||||
This->DirectDrawGlobal.dwMonitorFrequency = This->HalInfo.dwMonitorFrequency;
|
||||
if(!DdQueryDirectDrawObject (
|
||||
&This->DirectDrawGlobal,
|
||||
&This->HalInfo,
|
||||
This->HalInfo.lpDDCallbacks,
|
||||
This->HalInfo.lpDDSurfaceCallbacks,
|
||||
This->HalInfo.lpDDPaletteCallbacks,
|
||||
(LPD3DHAL_CALLBACKS)This->DirectDrawGlobal.lpD3DHALCallbacks,
|
||||
(LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData,
|
||||
This->HalInfo.lpDDExeBufCallbacks,
|
||||
((LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData)->lpTextureFormats,
|
||||
This->DirectDrawGlobal.lpdwFourCC,
|
||||
This->HalInfo.vmiData.pvmList
|
||||
))
|
||||
{
|
||||
return DD_FALSE;
|
||||
}
|
||||
|
||||
/* Copy HalInfo to DirectDrawGlobal (Not complete)*/
|
||||
RtlCopyMemory(&This->DirectDrawGlobal.vmiData,&This->HalInfo.vmiData,sizeof(VIDMEMINFO));
|
||||
RtlCopyMemory(&This->DirectDrawGlobal.ddCaps,&This->HalInfo.ddCaps,sizeof(DDCORECAPS));
|
||||
This->DirectDrawGlobal.dwMonitorFrequency = This->HalInfo.dwMonitorFrequency;
|
||||
|
||||
This->DirectDrawGlobal.dwModeIndex = This->HalInfo.dwModeIndex;
|
||||
This->DirectDrawGlobal.dwNumModes = This->HalInfo.dwNumModes;
|
||||
This->DirectDrawGlobal.lpModeInfo = This->HalInfo.lpModeInfo;
|
||||
|
||||
|
||||
/* Unsure which of these two for lpPDevice
|
||||
/* Unsure which of these two for lpPDevice
|
||||
This->DirectDrawGlobal.dwPDevice = This->HalInfo.lpPDevice;
|
||||
This->lpDriverHandle = This->HalInfo.lpPDevice;
|
||||
*/
|
||||
|
||||
This->lpDriverHandle = This->HalInfo.lpPDevice;
|
||||
*/
|
||||
This->DirectDrawGlobal.hInstance = This->HalInfo.hInstance;
|
||||
RtlCopyMemory(&This->DirectDrawGlobal.lpDDCBtmp->HALDDExeBuf,
|
||||
&This->HalInfo.lpDDExeBufCallbacks,sizeof(DDHAL_DDEXEBUFCALLBACKS));
|
||||
|
||||
RtlCopyMemory(&This->DirectDrawGlobal.lpDDCBtmp->HALDDExeBuf,&This->HalInfo.lpDDExeBufCallbacks,sizeof(DDHAL_DDEXEBUFCALLBACKS));
|
||||
/************************************************************************/
|
||||
/* Set up the rest of the callbacks all callbacks we get back from */
|
||||
/* gdi32.dll is user mode */
|
||||
/************************************************************************/
|
||||
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* Set up the rest of the callbacks all callbacks we get back from */
|
||||
/* gdi32.dll is user mode */
|
||||
/************************************************************************/
|
||||
/* Todo add a check see if HalInfo.GetDriverInfo is supported or not */
|
||||
/* Do not trust msdn what it say about dwContext it is not in use for
|
||||
windows nt, it is in use for all os, and it always pont to
|
||||
DirectDrawGlobal.hDD */
|
||||
|
||||
/* Todo add a check see if HalInfo.GetDriverInfo is supported or not */
|
||||
/* FIXME add all callback that have been commect out to gpl */
|
||||
/* FIXME free the memmor that being alloc when ddraw.dll exists */
|
||||
/* FIXME add check for DriverInfo if the handle or not */
|
||||
|
||||
/* Do not trust msdn what it say about dwContext it is not in use for
|
||||
windows nt, it is in use for all os, and it always pont to
|
||||
DirectDrawGlobal.hDD */
|
||||
DDHAL_GETDRIVERINFODATA DriverInfo;
|
||||
memset(&DriverInfo,0, sizeof(DDHAL_GETDRIVERINFODATA));
|
||||
DriverInfo.dwSize = sizeof(DDHAL_GETDRIVERINFODATA);
|
||||
DriverInfo.dwContext = This->DirectDrawGlobal.hDD;
|
||||
|
||||
/* FIXME add all callback that have been commect out to gpl */
|
||||
/* FIXME free the memmor that being alloc when ddraw.dll exists */
|
||||
/* FIXME add check for DriverInfo if the handle or not */
|
||||
|
||||
DDHAL_GETDRIVERINFODATA DriverInfo;
|
||||
memset(&DriverInfo,0, sizeof(DDHAL_GETDRIVERINFODATA));
|
||||
DriverInfo.dwSize = sizeof(DDHAL_GETDRIVERINFODATA);
|
||||
DriverInfo.dwContext = This->DirectDrawGlobal.hDD;
|
||||
|
||||
|
||||
/* Get ColorControlCallbacks */
|
||||
DriverInfo.guidInfo = GUID_ColorControlCallbacks;
|
||||
DriverInfo.lpvData = &This->DirectDrawGlobal.lpDDCBtmp->HALDDColorControl;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDCOLORCONTROLCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
|
||||
|
||||
/* Get the GUID_D3DCallbacks callback */
|
||||
|
||||
/* Problem with include files
|
||||
DDHAL_DDMISCELLANEOUSCALLBACKS misc;
|
||||
DriverInfo.guidInfo = GUID_D3DCallbacks;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);*/
|
||||
|
||||
/* Get the D3DCallbacks2 */
|
||||
This->DirectDrawGlobal.lpD3DHALCallbacks2 = (ULONG_PTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(D3DHAL_CALLBACKS2));
|
||||
DriverInfo.guidInfo = GUID_D3DCallbacks2;
|
||||
DriverInfo.lpvData = (PVOID)This->DirectDrawGlobal.lpD3DHALCallbacks2;
|
||||
DriverInfo.dwExpectedSize = sizeof(D3DHAL_CALLBACKS2);
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
|
||||
|
||||
/* Get the D3DCallbacks3 */
|
||||
This->DirectDrawGlobal.lpD3DHALCallbacks = (ULONG_PTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(D3DHAL_CALLBACKS3));
|
||||
DriverInfo.guidInfo = GUID_D3DCallbacks3;
|
||||
DriverInfo.lpvData = (PVOID)This->DirectDrawGlobal.lpD3DHALCallbacks;
|
||||
DriverInfo.dwExpectedSize = sizeof(D3DHAL_CALLBACKS3);
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
|
||||
|
||||
/* Get the misc callback */
|
||||
/* Problem with include files
|
||||
DriverInfo.guidInfo = GUID_D3DCaps;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
*/
|
||||
|
||||
/* Get the D3DExtendedCaps */
|
||||
|
||||
This->DirectDrawGlobal.lpD3DExtendedCaps = (ULONG_PTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(D3DHAL_D3DEXTENDEDCAPS));
|
||||
DriverInfo.guidInfo = GUID_D3DExtendedCaps;
|
||||
DriverInfo.lpvData = (PVOID) This->DirectDrawGlobal.lpD3DExtendedCaps;
|
||||
DriverInfo.dwExpectedSize = sizeof(D3DHAL_D3DEXTENDEDCAPS);
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
/* Get ColorControlCallbacks */
|
||||
DriverInfo.guidInfo = GUID_ColorControlCallbacks;
|
||||
DriverInfo.lpvData = &This->DirectDrawGlobal.lpDDCBtmp->HALDDColorControl;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDCOLORCONTROLCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||
|
||||
/* Get the GUID_D3DCallbacks callback */
|
||||
/* Problem with include files
|
||||
DDHAL_DDMISCELLANEOUSCALLBACKS misc;
|
||||
DriverInfo.guidInfo = GUID_D3DCallbacks;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);*/
|
||||
|
||||
/* Get the D3DCallbacks2 */
|
||||
This->DirectDrawGlobal.lpD3DHALCallbacks2 = (ULONG_PTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(D3DHAL_CALLBACKS2));
|
||||
DriverInfo.guidInfo = GUID_D3DCallbacks2;
|
||||
DriverInfo.lpvData = (PVOID)This->DirectDrawGlobal.lpD3DHALCallbacks2;
|
||||
DriverInfo.dwExpectedSize = sizeof(D3DHAL_CALLBACKS2);
|
||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||
|
||||
/* Get the D3DParseUnknownCommandCallback */
|
||||
/* D3dDrawPrimitives2 callback where should it be fill in
|
||||
DriverInfo.guidInfo = GUID_D3DParseUnknownCommandCallback;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
|
||||
/* Get the D3DCallbacks3 */
|
||||
This->DirectDrawGlobal.lpD3DHALCallbacks = (ULONG_PTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(D3DHAL_CALLBACKS3));
|
||||
DriverInfo.guidInfo = GUID_D3DCallbacks3;
|
||||
DriverInfo.lpvData = (PVOID)This->DirectDrawGlobal.lpD3DHALCallbacks;
|
||||
DriverInfo.dwExpectedSize = sizeof(D3DHAL_CALLBACKS3);
|
||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||
|
||||
/* Get the misc callback */
|
||||
/* Problem with include files
|
||||
DriverInfo.guidInfo = GUID_D3DCaps;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
*/
|
||||
|
||||
/* Get the GetHeapAlignment */
|
||||
/* where should it be fill in
|
||||
DriverInfo.guidInfo = GUID_GetHeapAlignment;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
*/
|
||||
|
||||
|
||||
/* Get the KernelCallbacks */
|
||||
DriverInfo.guidInfo = GUID_KernelCallbacks;
|
||||
DriverInfo.lpvData = &This->DirectDrawGlobal.lpDDCBtmp->HALDDKernel;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDKERNELCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
|
||||
|
||||
/* Get the KernelCaps */
|
||||
This->DirectDrawGlobal.lpDDKernelCaps = (LPDDKERNELCAPS)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DDHAL_DDKERNELCALLBACKS));
|
||||
DriverInfo.guidInfo = GUID_KernelCaps;
|
||||
DriverInfo.lpvData = (PVOID) This->DirectDrawGlobal.lpDDKernelCaps;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDKERNELCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
|
||||
|
||||
/* Get the MiscellaneousCallbacks */
|
||||
DriverInfo.guidInfo = GUID_MiscellaneousCallbacks;
|
||||
DriverInfo.lpvData = &This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
|
||||
|
||||
/* Get the Miscellaneous2Callbacks */
|
||||
/* Not in the DDRAWI_DIRECTDRAW_GBL we map it up as private
|
||||
Contain CreatesurfaceEx and other nice callbacks */
|
||||
DriverInfo.guidInfo = GUID_Miscellaneous2Callbacks;
|
||||
DriverInfo.lpvData = &This->Misc2Callback;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
/* Get the D3DExtendedCaps */
|
||||
|
||||
This->DirectDrawGlobal.lpD3DExtendedCaps = (ULONG_PTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(D3DHAL_D3DEXTENDEDCAPS));
|
||||
DriverInfo.guidInfo = GUID_D3DExtendedCaps;
|
||||
DriverInfo.lpvData = (PVOID) This->DirectDrawGlobal.lpD3DExtendedCaps;
|
||||
DriverInfo.dwExpectedSize = sizeof(D3DHAL_D3DEXTENDEDCAPS);
|
||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||
|
||||
/* Get the MotionCompCallbacks */
|
||||
DriverInfo.guidInfo = GUID_MotionCompCallbacks;
|
||||
DriverInfo.lpvData = &This->DirectDrawGlobal.lpDDCBtmp->HALDDMotionComp;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMOTIONCOMPCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
|
||||
/* Get the D3DParseUnknownCommandCallback */
|
||||
/* D3dDrawPrimitives2 callback where should it be fill in
|
||||
DriverInfo.guidInfo = GUID_D3DParseUnknownCommandCallback;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
*/
|
||||
|
||||
/* Get the GetHeapAlignment */
|
||||
/* where should it be fill in
|
||||
DriverInfo.guidInfo = GUID_GetHeapAlignment;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
*/
|
||||
|
||||
/* Get the KernelCallbacks */
|
||||
DriverInfo.guidInfo = GUID_KernelCallbacks;
|
||||
DriverInfo.lpvData = &This->DirectDrawGlobal.lpDDCBtmp->HALDDKernel;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDKERNELCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||
|
||||
/* Get the KernelCaps */
|
||||
This->DirectDrawGlobal.lpDDKernelCaps = (LPDDKERNELCAPS)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DDHAL_DDKERNELCALLBACKS));
|
||||
DriverInfo.guidInfo = GUID_KernelCaps;
|
||||
DriverInfo.lpvData = (PVOID) This->DirectDrawGlobal.lpDDKernelCaps;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDKERNELCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||
|
||||
/* Get the MiscellaneousCallbacks */
|
||||
DriverInfo.guidInfo = GUID_MiscellaneousCallbacks;
|
||||
DriverInfo.lpvData = &This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||
|
||||
/* Get the Miscellaneous2Callbacks */
|
||||
/* Not in the DDRAWI_DIRECTDRAW_GBL we map it up as private
|
||||
Contain CreatesurfaceEx and other nice callbacks */
|
||||
DriverInfo.guidInfo = GUID_Miscellaneous2Callbacks;
|
||||
DriverInfo.lpvData = &This->Misc2Callback;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||
|
||||
/* Get the MotionCompCallbacks */
|
||||
DriverInfo.guidInfo = GUID_MotionCompCallbacks;
|
||||
DriverInfo.lpvData = &This->DirectDrawGlobal.lpDDCBtmp->HALDDMotionComp;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMOTIONCOMPCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||
|
||||
/* Get the NonLocalVidMemCaps */
|
||||
This->DirectDrawGlobal.lpddNLVCaps = (LPDDNONLOCALVIDMEMCAPS)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DDNONLOCALVIDMEMCAPS));
|
||||
DriverInfo.guidInfo = GUID_NonLocalVidMemCaps;
|
||||
DriverInfo.lpvData = (PVOID)This->DirectDrawGlobal.lpddNLVCaps;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDNONLOCALVIDMEMCAPS);
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
|
||||
This->DirectDrawGlobal.lpddNLVCaps = (LPDDNONLOCALVIDMEMCAPS)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DDNONLOCALVIDMEMCAPS));
|
||||
DriverInfo.guidInfo = GUID_NonLocalVidMemCaps;
|
||||
DriverInfo.lpvData = (PVOID)This->DirectDrawGlobal.lpddNLVCaps;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDNONLOCALVIDMEMCAPS);
|
||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||
|
||||
|
||||
/* Get the NTCallbacks */
|
||||
/* Fill in wher
|
||||
DriverInfo.guidInfo = GUID_NTCallbacks;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
*/
|
||||
|
||||
/* Get the NTPrivateDriverCaps */
|
||||
/* Fill in wher
|
||||
DriverInfo.guidInfo = GUID_NTPrivateDriverCaps;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
*/
|
||||
|
||||
/* Get the UpdateNonLocalHeap */
|
||||
/* Fill in where
|
||||
DriverInfo.guidInfo = GUID_UpdateNonLocalHeap;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
*/
|
||||
|
||||
/* Get the VideoPortCallbacks */
|
||||
DriverInfo.guidInfo = GUID_VideoPortCallbacks;
|
||||
DriverInfo.lpvData = &This->DirectDrawGlobal.lpDDCBtmp->HALDDVideoPort;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDVIDEOPORTCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
|
||||
|
||||
/* Get the VideoPortCaps */
|
||||
This->DirectDrawGlobal.lpDDVideoPortCaps = (LPDDVIDEOPORTCAPS)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DDVIDEOPORTCAPS));
|
||||
DriverInfo.guidInfo = GUID_VideoPortCaps;
|
||||
DriverInfo.lpvData = (PVOID)This->DirectDrawGlobal.lpDDVideoPortCaps;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDVIDEOPORTCAPS);
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
|
||||
|
||||
/* Get the ZPixelFormats */
|
||||
This->DirectDrawGlobal.lpZPixelFormats = (LPDDPIXELFORMAT) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DDPIXELFORMAT) * This->DirectDrawGlobal.dwNumZPixelFormats);
|
||||
DriverInfo.guidInfo = GUID_ZPixelFormats;
|
||||
DriverInfo.lpvData = (PVOID)This->DirectDrawGlobal.lpZPixelFormats;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDPIXELFORMAT);
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
|
||||
/* Setup some info from the callbacks we got */
|
||||
DDHAL_GETAVAILDRIVERMEMORYDATA mem;
|
||||
mem.lpDD = &This->DirectDrawGlobal;
|
||||
|
||||
This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.GetAvailDriverMemory(&mem);
|
||||
|
||||
This->DirectDrawGlobal.ddCaps.dwVidMemFree = mem.dwFree;
|
||||
This->DirectDrawGlobal.ddCaps.dwVidMemTotal = mem.dwTotal;
|
||||
|
||||
/* Now all setup for HAL is done */
|
||||
return DD_OK;
|
||||
/* Fill in wher
|
||||
DriverInfo.guidInfo = GUID_NTCallbacks;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
*/
|
||||
|
||||
/* Get the NTPrivateDriverCaps */
|
||||
/* Fill in wher
|
||||
DriverInfo.guidInfo = GUID_NTPrivateDriverCaps;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
*/
|
||||
|
||||
/* Get the UpdateNonLocalHeap */
|
||||
/* Fill in where
|
||||
DriverInfo.guidInfo = GUID_UpdateNonLocalHeap;
|
||||
DriverInfo.lpvData = &misc;
|
||||
DriverInfo.dwExpectedSize = sizeof();
|
||||
This->HalInfo.GetDriverInfo( &DriverInfo);
|
||||
*/
|
||||
|
||||
/* Get the VideoPortCallbacks */
|
||||
DriverInfo.guidInfo = GUID_VideoPortCallbacks;
|
||||
DriverInfo.lpvData = &This->DirectDrawGlobal.lpDDCBtmp->HALDDVideoPort;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDHAL_DDVIDEOPORTCALLBACKS);
|
||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||
|
||||
/* Get the VideoPortCaps */
|
||||
This->DirectDrawGlobal.lpDDVideoPortCaps = (LPDDVIDEOPORTCAPS)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DDVIDEOPORTCAPS));
|
||||
DriverInfo.guidInfo = GUID_VideoPortCaps;
|
||||
DriverInfo.lpvData = (PVOID)This->DirectDrawGlobal.lpDDVideoPortCaps;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDVIDEOPORTCAPS);
|
||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||
|
||||
/* Get the ZPixelFormats */
|
||||
This->DirectDrawGlobal.lpZPixelFormats = (LPDDPIXELFORMAT) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DDPIXELFORMAT) * This->DirectDrawGlobal.dwNumZPixelFormats);
|
||||
DriverInfo.guidInfo = GUID_ZPixelFormats;
|
||||
DriverInfo.lpvData = (PVOID)This->DirectDrawGlobal.lpZPixelFormats;
|
||||
DriverInfo.dwExpectedSize = sizeof(DDPIXELFORMAT);
|
||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||
|
||||
/* Setup some info from the callbacks we got */
|
||||
DDHAL_GETAVAILDRIVERMEMORYDATA mem;
|
||||
mem.lpDD = &This->DirectDrawGlobal;
|
||||
This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.GetAvailDriverMemory(&mem);
|
||||
This->DirectDrawGlobal.ddCaps.dwVidMemFree = mem.dwFree;
|
||||
This->DirectDrawGlobal.ddCaps.dwVidMemTotal = mem.dwTotal;
|
||||
|
||||
/* Now all setup for HAL is done */
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
HRESULT Hal_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
DDHAL_SETEXCLUSIVEMODEDATA SetExclusiveMode;
|
||||
DDHAL_SETEXCLUSIVEMODEDATA SetExclusiveMode;
|
||||
|
||||
if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_SETEXCLUSIVEMODE))
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_SETEXCLUSIVEMODE))
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
SetExclusiveMode.lpDD = &This->DirectDrawGlobal;
|
||||
SetExclusiveMode.lpDD = &This->DirectDrawGlobal;
|
||||
SetExclusiveMode.ddRVal = DDERR_NOTPALETTIZED;
|
||||
SetExclusiveMode.dwEnterExcl = This->cooperative_level;
|
||||
SetExclusiveMode.dwEnterExcl = This->cooperative_level;
|
||||
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.SetExclusiveMode(&SetExclusiveMode) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.SetExclusiveMode(&SetExclusiveMode) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
return SetExclusiveMode.ddRVal;
|
||||
return SetExclusiveMode.ddRVal;
|
||||
}
|
||||
|
||||
|
||||
|
@ -333,166 +312,172 @@ VOID Hal_DirectDraw_Release (LPDIRECTDRAW7 iface)
|
|||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
DdDeleteDirectDrawObject (&This->DirectDrawGlobal);
|
||||
DdDeleteDirectDrawObject (&This->DirectDrawGlobal);
|
||||
|
||||
if(This->DirectDrawGlobal.lpDDKernelCaps)
|
||||
HeapFree(GetProcessHeap(), 0, This->DirectDrawGlobal.lpDDKernelCaps);
|
||||
if(This->DirectDrawGlobal.lpDDKernelCaps)
|
||||
HeapFree(GetProcessHeap(), 0, This->DirectDrawGlobal.lpDDKernelCaps);
|
||||
|
||||
if(This->DirectDrawGlobal.lpddNLVCaps)
|
||||
HeapFree(GetProcessHeap(), 0, This->DirectDrawGlobal.lpddNLVCaps);
|
||||
if(This->DirectDrawGlobal.lpddNLVCaps)
|
||||
HeapFree(GetProcessHeap(), 0, This->DirectDrawGlobal.lpddNLVCaps);
|
||||
|
||||
if(This->DirectDrawGlobal.lpDDVideoPortCaps)
|
||||
HeapFree(GetProcessHeap(), 0, This->DirectDrawGlobal.lpDDVideoPortCaps);
|
||||
if(This->DirectDrawGlobal.lpDDVideoPortCaps)
|
||||
HeapFree(GetProcessHeap(), 0, This->DirectDrawGlobal.lpDDVideoPortCaps);
|
||||
|
||||
if(This->DirectDrawGlobal.lpdwFourCC)
|
||||
HeapFree(GetProcessHeap(), 0, This->DirectDrawGlobal.lpdwFourCC);
|
||||
if(This->DirectDrawGlobal.lpdwFourCC)
|
||||
HeapFree(GetProcessHeap(), 0, This->DirectDrawGlobal.lpdwFourCC);
|
||||
|
||||
if(This->DirectDrawGlobal.lpZPixelFormats)
|
||||
HeapFree(GetProcessHeap(), 0, This->DirectDrawGlobal.lpZPixelFormats);
|
||||
if(This->DirectDrawGlobal.lpZPixelFormats)
|
||||
HeapFree(GetProcessHeap(), 0, This->DirectDrawGlobal.lpZPixelFormats);
|
||||
|
||||
if(This->HalInfo.vmiData.pvmList)
|
||||
HeapFree(GetProcessHeap(), 0, This->HalInfo.vmiData.pvmList);
|
||||
|
||||
if(((LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData)->lpTextureFormats)
|
||||
HeapFree(GetProcessHeap(), 0, ((LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData)->lpTextureFormats);
|
||||
|
||||
if(This->DirectDrawGlobal.lpDDCBtmp)
|
||||
HeapFree(GetProcessHeap(), 0, This->DirectDrawGlobal.lpDDCBtmp);
|
||||
|
||||
if(This->DirectDrawGlobal.lpD3DHALCallbacks)
|
||||
HeapFree(GetProcessHeap(), 0, (PVOID)This->DirectDrawGlobal.lpD3DHALCallbacks);
|
||||
|
||||
if(This->DirectDrawGlobal.lpD3DGlobalDriverData)
|
||||
HeapFree(GetProcessHeap(), 0, (PVOID)This->DirectDrawGlobal.lpD3DGlobalDriverData);
|
||||
if(This->HalInfo.vmiData.pvmList)
|
||||
HeapFree(GetProcessHeap(), 0, This->HalInfo.vmiData.pvmList);
|
||||
|
||||
if(((LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData)->lpTextureFormats)
|
||||
HeapFree(GetProcessHeap(), 0, ((LPD3DHAL_GLOBALDRIVERDATA)This->DirectDrawGlobal.lpD3DGlobalDriverData)->lpTextureFormats);
|
||||
|
||||
if(This->DirectDrawGlobal.lpDDCBtmp)
|
||||
HeapFree(GetProcessHeap(), 0, This->DirectDrawGlobal.lpDDCBtmp);
|
||||
|
||||
if(This->DirectDrawGlobal.lpD3DHALCallbacks)
|
||||
HeapFree(GetProcessHeap(), 0, (PVOID)This->DirectDrawGlobal.lpD3DHALCallbacks);
|
||||
|
||||
if(This->DirectDrawGlobal.lpD3DGlobalDriverData)
|
||||
HeapFree(GetProcessHeap(), 0, (PVOID)This->DirectDrawGlobal.lpD3DGlobalDriverData);
|
||||
}
|
||||
|
||||
|
||||
HRESULT Hal_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps,
|
||||
LPDWORD total, LPDWORD free)
|
||||
LPDWORD total, LPDWORD free)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
DDHAL_GETAVAILDRIVERMEMORYDATA mem;
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
DDHAL_GETAVAILDRIVERMEMORYDATA mem;
|
||||
|
||||
if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.dwFlags & DDHAL_MISCCB32_GETAVAILDRIVERMEMORY))
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.dwFlags & DDHAL_MISCCB32_GETAVAILDRIVERMEMORY))
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
mem.lpDD = &This->DirectDrawGlobal;
|
||||
mem.ddRVal = DDERR_NOTPALETTIZED;
|
||||
mem.lpDD = &This->DirectDrawGlobal;
|
||||
mem.ddRVal = DDERR_NOTPALETTIZED;
|
||||
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.GetAvailDriverMemory(&mem) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.GetAvailDriverMemory(&mem) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
ddscaps->dwCaps = mem.DDSCaps.dwCaps;
|
||||
ddscaps->dwCaps2 = mem.ddsCapsEx.dwCaps2;
|
||||
ddscaps->dwCaps = mem.DDSCaps.dwCaps;
|
||||
ddscaps->dwCaps2 = mem.ddsCapsEx.dwCaps2;
|
||||
ddscaps->dwCaps3 = mem.ddsCapsEx.dwCaps3;
|
||||
ddscaps->dwCaps4 = mem.ddsCapsEx.dwCaps4;
|
||||
*total = mem.dwTotal;
|
||||
*free = mem.dwFree;
|
||||
|
||||
return mem.ddRVal;
|
||||
ddscaps->dwCaps4 = mem.ddsCapsEx.dwCaps4;
|
||||
*total = mem.dwTotal;
|
||||
*free = mem.dwFree;
|
||||
|
||||
return mem.ddRVal;
|
||||
}
|
||||
|
||||
HRESULT Hal_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD dwFlags,HANDLE h)
|
||||
{
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
DDHAL_WAITFORVERTICALBLANKDATA WaitVectorData;
|
||||
DDHAL_WAITFORVERTICALBLANKDATA WaitVectorData;
|
||||
|
||||
if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_WAITFORVERTICALBLANK))
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
WaitVectorData.lpDD = &This->DirectDrawGlobal;
|
||||
WaitVectorData.dwFlags = dwFlags;
|
||||
WaitVectorData.hEvent = (DWORD)h;
|
||||
WaitVectorData.ddRVal = DDERR_NOTPALETTIZED;
|
||||
if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_WAITFORVERTICALBLANK))
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
WaitVectorData.lpDD = &This->DirectDrawGlobal;
|
||||
WaitVectorData.dwFlags = dwFlags;
|
||||
WaitVectorData.hEvent = (DWORD)h;
|
||||
WaitVectorData.ddRVal = DDERR_NOTPALETTIZED;
|
||||
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.WaitForVerticalBlank(&WaitVectorData) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.WaitForVerticalBlank(&WaitVectorData) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
return WaitVectorData.ddRVal;
|
||||
return WaitVectorData.ddRVal;
|
||||
}
|
||||
|
||||
HRESULT Hal_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScanLine)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
DDHAL_GETSCANLINEDATA GetScan;
|
||||
|
||||
if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_GETSCANLINE))
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_GETSCANLINE))
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
GetScan.lpDD = &This->DirectDrawGlobal;
|
||||
GetScan.lpDD = &This->DirectDrawGlobal;
|
||||
GetScan.ddRVal = DDERR_NOTPALETTIZED;
|
||||
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.GetScanLine(&GetScan) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.GetScanLine(&GetScan) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
*lpdwScanLine = GetScan.ddRVal;
|
||||
return GetScan.ddRVal;
|
||||
*lpdwScanLine = GetScan.ddRVal;
|
||||
return GetScan.ddRVal;
|
||||
}
|
||||
|
||||
HRESULT Hal_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 iface)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
DDHAL_FLIPTOGDISURFACEDATA FlipGdi;
|
||||
DDHAL_FLIPTOGDISURFACEDATA FlipGdi;
|
||||
|
||||
if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_FLIPTOGDISURFACE))
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_FLIPTOGDISURFACE))
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
FlipGdi.lpDD = &This->DirectDrawGlobal;
|
||||
FlipGdi.lpDD = &This->DirectDrawGlobal;
|
||||
FlipGdi.ddRVal = DDERR_NOTPALETTIZED;
|
||||
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.FlipToGDISurface(&FlipGdi) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
/* FIXME where should FlipGdi.dwToGDI be fill in */
|
||||
return FlipGdi.ddRVal;
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.FlipToGDISurface(&FlipGdi) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
/* FIXME where should FlipGdi.dwToGDI be fill in */
|
||||
return FlipGdi.ddRVal;
|
||||
}
|
||||
|
||||
HRESULT Hal_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 iface, DWORD dwWidth, DWORD dwHeight,
|
||||
DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags)
|
||||
DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags)
|
||||
{
|
||||
DDHAL_SETMODEDATA mode;
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_SETMODE))
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
mode.lpDD = &This->DirectDrawGlobal;
|
||||
mode.ddRVal = DDERR_NODRIVERSUPPORT;
|
||||
|
||||
/* FIXME : add search for which mode.ModeIndex we should use */
|
||||
/* FIXME : fill the mode.inexcl; */
|
||||
/* FIXME : fill the mode.useRefreshRate; */
|
||||
|
||||
/*
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.SetMode(&mode) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
*/
|
||||
DX_STUB;
|
||||
/* return mode.ddRVal */
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
#if 0
|
||||
HRESULT Hal_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 iface, DWORD dwWidth, DWORD dwHeight,
|
||||
DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_SETMODE))
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
DDHAL_SETMODEDATA mode;
|
||||
mode.lpDD = &This->DirectDrawGlobal;
|
||||
mode.ddRVal = DDERR_NODRIVERSUPPORT;
|
||||
|
||||
// FIXME : add search for which mode.ModeIndex we should use
|
||||
// FIXME : fill the mode.inexcl;
|
||||
// FIXME : fill the mode.useRefreshRate;
|
||||
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.SetMode(&mode) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
return mode.ddRVal
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -14,90 +14,86 @@
|
|||
HRESULT WINAPI Main_DirectDraw_Initialize (LPDIRECTDRAW7 iface, LPGUID lpGUID)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
HRESULT ret;
|
||||
HRESULT ret;
|
||||
|
||||
|
||||
// this if it is not called by DirectDrawCreate
|
||||
if(FALSE)
|
||||
return DDERR_ALREADYINITIALIZED;
|
||||
|
||||
// this if it is not called by DirectDrawCreate
|
||||
if(FALSE)
|
||||
return DDERR_ALREADYINITIALIZED;
|
||||
// save the parameter
|
||||
This->lpGUID = lpGUID;
|
||||
|
||||
// save the parameter
|
||||
This->lpGUID = lpGUID;
|
||||
// get the HDC
|
||||
This->hdc = GetWindowDC(GetDesktopWindow());
|
||||
This->Height = GetDeviceCaps(This->hdc, VERTRES);
|
||||
This->Width = GetDeviceCaps(This->hdc, HORZRES);
|
||||
This->Bpp = GetDeviceCaps(This->hdc, BITSPIXEL);
|
||||
|
||||
// get the HDC
|
||||
This->hdc = GetWindowDC(GetDesktopWindow());
|
||||
This->Height = GetDeviceCaps(This->hdc, VERTRES);
|
||||
This->Width = GetDeviceCaps(This->hdc, HORZRES);
|
||||
This->Bpp = GetDeviceCaps(This->hdc, BITSPIXEL);
|
||||
|
||||
// call software first
|
||||
if((ret = Hal_DirectDraw_Initialize (iface)) != DD_OK)
|
||||
return ret;
|
||||
|
||||
// ... then overwrite with hal
|
||||
if((ret = Hel_DirectDraw_Initialize (iface)) != DD_OK)
|
||||
return ret;
|
||||
|
||||
// call software first
|
||||
if((ret = Hal_DirectDraw_Initialize (iface)) != DD_OK)
|
||||
return ret;
|
||||
|
||||
// ... then overwrite with hal
|
||||
if((ret = Hel_DirectDraw_Initialize (iface)) != DD_OK)
|
||||
return ret;
|
||||
|
||||
return DD_OK;
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface, HWND hwnd, DWORD cooplevel)
|
||||
{
|
||||
// TODO:
|
||||
// - create a scaner that check which driver we should get the HDC from
|
||||
// for now we always asume it is the active dirver that should be use.
|
||||
// - allow more Flags
|
||||
// TODO:
|
||||
// - create a scaner that check which driver we should get the HDC from
|
||||
// for now we always asume it is the active dirver that should be use.
|
||||
// - allow more Flags
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
// check the parameters
|
||||
if (This->cooperative_level == cooplevel && This->window == hwnd)
|
||||
return DD_OK;
|
||||
// check the parameters
|
||||
if (This->cooperative_level == cooplevel && This->window == hwnd)
|
||||
return DD_OK;
|
||||
|
||||
if (This->window)
|
||||
return DDERR_HWNDALREADYSET;
|
||||
if (This->window)
|
||||
return DDERR_HWNDALREADYSET;
|
||||
|
||||
if (This->cooperative_level)
|
||||
return DDERR_EXCLUSIVEMODEALREADYSET;
|
||||
if (This->cooperative_level)
|
||||
return DDERR_EXCLUSIVEMODEALREADYSET;
|
||||
|
||||
if ((cooplevel&DDSCL_EXCLUSIVE) && !(cooplevel&DDSCL_FULLSCREEN))
|
||||
return DDERR_INVALIDPARAMS;
|
||||
if ((cooplevel&DDSCL_EXCLUSIVE) && !(cooplevel&DDSCL_FULLSCREEN))
|
||||
return DDERR_INVALIDPARAMS;
|
||||
|
||||
if (cooplevel&DDSCL_NORMAL && cooplevel&DDSCL_FULLSCREEN)
|
||||
return DDERR_INVALIDPARAMS;
|
||||
if (cooplevel&DDSCL_NORMAL && cooplevel&DDSCL_FULLSCREEN)
|
||||
return DDERR_INVALIDPARAMS;
|
||||
|
||||
// set the data
|
||||
This->window = hwnd;
|
||||
This->hdc = GetDC(hwnd);
|
||||
This->cooperative_level = cooplevel;
|
||||
// set the data
|
||||
This->window = hwnd;
|
||||
This->hdc = GetDC(hwnd);
|
||||
This->cooperative_level = cooplevel;
|
||||
|
||||
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_SETEXCLUSIVEMODE)
|
||||
{
|
||||
return Hal_DirectDraw_SetCooperativeLevel (iface);
|
||||
}
|
||||
{
|
||||
return Hal_DirectDraw_SetCooperativeLevel (iface);
|
||||
}
|
||||
|
||||
return Hel_DirectDraw_SetCooperativeLevel(iface);
|
||||
return Hel_DirectDraw_SetCooperativeLevel(iface);
|
||||
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 iface, DWORD dwWidth, DWORD dwHeight,
|
||||
DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags)
|
||||
DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags)
|
||||
{
|
||||
DWORD ret;
|
||||
DWORD ret;
|
||||
|
||||
/* FIXME implement hal setMode */
|
||||
if((ret = Hal_DirectDraw_SetDisplayMode(iface, dwWidth, dwHeight,
|
||||
if((ret = Hal_DirectDraw_SetDisplayMode(iface, dwWidth, dwHeight,
|
||||
dwBPP, dwRefreshRate, dwFlags)) == DD_OK)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = Hel_DirectDraw_SetDisplayMode(iface, dwWidth, dwHeight, dwBPP, dwRefreshRate, dwFlags);
|
||||
ret = Hel_DirectDraw_SetDisplayMode(iface, dwWidth, dwHeight, dwBPP, dwRefreshRate, dwFlags);
|
||||
|
||||
return ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
ULONG WINAPI Main_DirectDraw_AddRef (LPDIRECTDRAW7 iface)
|
||||
|
@ -105,7 +101,7 @@ ULONG WINAPI Main_DirectDraw_AddRef (LPDIRECTDRAW7 iface)
|
|||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
ULONG ref = InterlockedIncrement((PLONG)&This->DirectDrawGlobal.dwRefCnt);
|
||||
|
||||
return ref;
|
||||
return ref;
|
||||
}
|
||||
|
||||
ULONG WINAPI Main_DirectDraw_Release (LPDIRECTDRAW7 iface)
|
||||
|
@ -115,41 +111,41 @@ ULONG WINAPI Main_DirectDraw_Release (LPDIRECTDRAW7 iface)
|
|||
|
||||
if (ref == 0)
|
||||
{
|
||||
// set resoltion back to the one in registry
|
||||
if(This->cooperative_level & DDSCL_EXCLUSIVE)
|
||||
ChangeDisplaySettings(NULL, 0);
|
||||
// set resoltion back to the one in registry
|
||||
if(This->cooperative_level & DDSCL_EXCLUSIVE)
|
||||
ChangeDisplaySettings(NULL, 0);
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
}
|
||||
|
||||
return ref;
|
||||
return ref;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_QueryInterface (
|
||||
LPDIRECTDRAW7 iface, REFIID id, LPVOID *obj )
|
||||
LPDIRECTDRAW7 iface, REFIID id, LPVOID *obj )
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
if (IsEqualGUID(&IID_IDirectDraw7, id))
|
||||
{
|
||||
*obj = &This->lpVtbl;
|
||||
{
|
||||
*obj = &This->lpVtbl;
|
||||
}
|
||||
else if (IsEqualGUID(&IID_IDirectDraw, id))
|
||||
{
|
||||
*obj = &This->lpVtbl_v1;
|
||||
{
|
||||
*obj = &This->lpVtbl_v1;
|
||||
}
|
||||
else if (IsEqualGUID(&IID_IDirectDraw2, id))
|
||||
{
|
||||
*obj = &This->lpVtbl_v2;
|
||||
{
|
||||
*obj = &This->lpVtbl_v2;
|
||||
}
|
||||
else if (IsEqualGUID(&IID_IDirectDraw4, id))
|
||||
{
|
||||
*obj = &This->lpVtbl_v4;
|
||||
{
|
||||
*obj = &This->lpVtbl_v4;
|
||||
}
|
||||
else
|
||||
{
|
||||
*obj = NULL;
|
||||
return E_NOINTERFACE;
|
||||
{
|
||||
*obj = NULL;
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
Main_DirectDraw_AddRef(iface);
|
||||
|
@ -157,183 +153,147 @@ HRESULT WINAPI Main_DirectDraw_QueryInterface (
|
|||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD,
|
||||
LPDIRECTDRAWSURFACE7 *ppSurf, IUnknown *pUnkOuter)
|
||||
LPDIRECTDRAWSURFACE7 *ppSurf, IUnknown *pUnkOuter)
|
||||
{
|
||||
if (pUnkOuter!=NULL)
|
||||
return DDERR_INVALIDPARAMS;
|
||||
return DDERR_INVALIDPARAMS;
|
||||
|
||||
if(sizeof(DDSURFACEDESC2)!=pDDSD->dwSize)
|
||||
return DDERR_UNSUPPORTED;
|
||||
if(sizeof(DDSURFACEDESC2)!=pDDSD->dwSize)
|
||||
return DDERR_UNSUPPORTED;
|
||||
|
||||
// the nasty com stuff
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
// the nasty com stuff
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
IDirectDrawSurfaceImpl* That;
|
||||
IDirectDrawSurfaceImpl* That;
|
||||
|
||||
That = (IDirectDrawSurfaceImpl*)HeapAlloc(GetProcessHeap(), 0, sizeof(IDirectDrawSurfaceImpl));
|
||||
|
||||
if (That == NULL)
|
||||
return E_OUTOFMEMORY;
|
||||
That = (IDirectDrawSurfaceImpl*)HeapAlloc(GetProcessHeap(), 0, sizeof(IDirectDrawSurfaceImpl));
|
||||
|
||||
if (That == NULL)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
ZeroMemory(That, sizeof(IDirectDrawSurfaceImpl));
|
||||
|
||||
That->lpVtbl = &DirectDrawSurface7_Vtable;
|
||||
That->lpVtbl_v3 = &DDRAW_IDDS3_Thunk_VTable;
|
||||
ZeroMemory(That, sizeof(IDirectDrawSurfaceImpl));
|
||||
|
||||
That->lpVtbl = &DirectDrawSurface7_Vtable;
|
||||
That->lpVtbl_v3 = &DDRAW_IDDS3_Thunk_VTable;
|
||||
|
||||
This->DirectDrawGlobal.dsList = (LPDDRAWI_DDRAWSURFACE_INT)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DDRAWI_DDRAWSURFACE_INT));
|
||||
This->DirectDrawGlobal.dsList = (LPDDRAWI_DDRAWSURFACE_INT)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(DDRAWI_DDRAWSURFACE_INT));
|
||||
That->owner = (IDirectDrawImpl *)This;
|
||||
That->owner->DirectDrawGlobal.dsList->dwIntRefCnt =1;
|
||||
|
||||
That->owner = (IDirectDrawImpl *)This;
|
||||
/* we alwasy set to use the DirectDrawSurface7_Vtable as internel */
|
||||
That->owner->DirectDrawGlobal.dsList->lpVtbl = (PVOID) &DirectDrawSurface7_Vtable;
|
||||
|
||||
*ppSurf = (LPDIRECTDRAWSURFACE7)That;
|
||||
|
||||
That->owner->DirectDrawGlobal.dsList->dwIntRefCnt =1;
|
||||
|
||||
/* we alwasy set to use the DirectDrawSurface7_Vtable as internel */
|
||||
That->owner->DirectDrawGlobal.dsList->lpVtbl = (PVOID) &DirectDrawSurface7_Vtable;
|
||||
|
||||
|
||||
*ppSurf = (LPDIRECTDRAWSURFACE7)That;
|
||||
|
||||
// the real surface object creation
|
||||
return That->lpVtbl->Initialize (*ppSurf, (LPDIRECTDRAW)iface, pDDSD);
|
||||
// the real surface object creation
|
||||
return That->lpVtbl->Initialize (*ppSurf, (LPDIRECTDRAW)iface, pDDSD);
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_CreateClipper(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
||||
LPDIRECTDRAWCLIPPER *ppClipper, IUnknown *pUnkOuter)
|
||||
LPDIRECTDRAWCLIPPER *ppClipper, IUnknown *pUnkOuter)
|
||||
{
|
||||
if (pUnkOuter!=NULL)
|
||||
return DDERR_INVALIDPARAMS;
|
||||
return DDERR_INVALIDPARAMS;
|
||||
|
||||
IDirectDrawClipperImpl* That;
|
||||
That = (IDirectDrawClipperImpl*)HeapAlloc(GetProcessHeap(), 0, sizeof(IDirectDrawClipperImpl));
|
||||
IDirectDrawClipperImpl* That;
|
||||
That = (IDirectDrawClipperImpl*)HeapAlloc(GetProcessHeap(), 0, sizeof(IDirectDrawClipperImpl));
|
||||
|
||||
if (That == NULL)
|
||||
return E_OUTOFMEMORY;
|
||||
if (That == NULL)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
ZeroMemory(That, sizeof(IDirectDrawClipperImpl));
|
||||
ZeroMemory(That, sizeof(IDirectDrawClipperImpl));
|
||||
|
||||
That->lpVtbl = &DirectDrawClipper_Vtable;
|
||||
That->ref = 1;
|
||||
*ppClipper = (LPDIRECTDRAWCLIPPER)That;
|
||||
That->lpVtbl = &DirectDrawClipper_Vtable;
|
||||
That->ref = 1;
|
||||
*ppClipper = (LPDIRECTDRAWCLIPPER)That;
|
||||
|
||||
return That->lpVtbl->Initialize (*ppClipper, (LPDIRECTDRAW)iface, dwFlags);
|
||||
return That->lpVtbl->Initialize (*ppClipper, (LPDIRECTDRAW)iface, dwFlags);
|
||||
}
|
||||
|
||||
// This function is exported by the dll
|
||||
HRESULT WINAPI DirectDrawCreateClipper (DWORD dwFlags,
|
||||
LPDIRECTDRAWCLIPPER* lplpDDClipper, LPUNKNOWN pUnkOuter)
|
||||
LPDIRECTDRAWCLIPPER* lplpDDClipper, LPUNKNOWN pUnkOuter)
|
||||
{
|
||||
return Main_DirectDraw_CreateClipper(NULL, dwFlags, lplpDDClipper, pUnkOuter);
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_CreatePalette(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
||||
LPPALETTEENTRY palent, LPDIRECTDRAWPALETTE* ppPalette, LPUNKNOWN pUnkOuter)
|
||||
LPPALETTEENTRY palent, LPDIRECTDRAWPALETTE* ppPalette, LPUNKNOWN pUnkOuter)
|
||||
{
|
||||
if (pUnkOuter!=NULL)
|
||||
return DDERR_INVALIDPARAMS;
|
||||
return DDERR_INVALIDPARAMS;
|
||||
|
||||
IDirectDrawPaletteImpl* That;
|
||||
That = (IDirectDrawPaletteImpl*)HeapAlloc(GetProcessHeap(), 0, sizeof(IDirectDrawPaletteImpl));
|
||||
IDirectDrawPaletteImpl* That;
|
||||
That = (IDirectDrawPaletteImpl*)HeapAlloc(GetProcessHeap(), 0, sizeof(IDirectDrawPaletteImpl));
|
||||
|
||||
if (That == NULL)
|
||||
return E_OUTOFMEMORY;
|
||||
if (That == NULL)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
ZeroMemory(That, sizeof(IDirectDrawPaletteImpl));
|
||||
ZeroMemory(That, sizeof(IDirectDrawPaletteImpl));
|
||||
|
||||
That->lpVtbl = &DirectDrawPalette_Vtable;
|
||||
That->ref = 1;
|
||||
*ppPalette = (LPDIRECTDRAWPALETTE)That;
|
||||
That->lpVtbl = &DirectDrawPalette_Vtable;
|
||||
That->ref = 1;
|
||||
*ppPalette = (LPDIRECTDRAWPALETTE)That;
|
||||
|
||||
return That->lpVtbl->Initialize (*ppPalette, (LPDIRECTDRAW)iface, dwFlags, palent);
|
||||
}
|
||||
|
||||
/**** Stubs ****/
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_Compact(LPDIRECTDRAW7 iface)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_DuplicateSurface(LPDIRECTDRAW7 iface, LPDIRECTDRAWSURFACE7 src,
|
||||
LPDIRECTDRAWSURFACE7* dst)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_EnumDisplayModes(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
||||
LPDDSURFACEDESC2 pDDSD, LPVOID context, LPDDENUMMODESCALLBACK2 callback)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_EnumSurfaces(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
||||
LPDDSURFACEDESC2 lpDDSD2, LPVOID context,
|
||||
LPDDENUMSURFACESCALLBACK7 callback)
|
||||
{
|
||||
DX_STUB;
|
||||
return That->lpVtbl->Initialize (*ppPalette, (LPDIRECTDRAW)iface, dwFlags, palent);
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 iface)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_FLIPTOGDISURFACE)
|
||||
{
|
||||
return Hal_DirectDraw_FlipToGDISurface( iface);
|
||||
}
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_FLIPTOGDISURFACE)
|
||||
{
|
||||
return Hal_DirectDraw_FlipToGDISurface( iface);
|
||||
}
|
||||
|
||||
return Hel_DirectDraw_FlipToGDISurface( iface);
|
||||
return Hel_DirectDraw_FlipToGDISurface( iface);
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetCaps(LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps,
|
||||
LPDDCAPS pHELCaps)
|
||||
LPDDCAPS pHELCaps)
|
||||
{
|
||||
DWORD status = DD_FALSE;
|
||||
IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
|
||||
DWORD status = DD_FALSE;
|
||||
IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
|
||||
|
||||
if (pDriverCaps != NULL)
|
||||
{
|
||||
RtlCopyMemory(pDriverCaps,&This->DirectDrawGlobal.ddCaps,sizeof(DDCORECAPS));
|
||||
status = DD_OK;
|
||||
}
|
||||
if (pDriverCaps != NULL)
|
||||
{
|
||||
RtlCopyMemory(pDriverCaps,&This->DirectDrawGlobal.ddCaps,sizeof(DDCORECAPS));
|
||||
status = DD_OK;
|
||||
}
|
||||
|
||||
if (pHELCaps != NULL)
|
||||
{
|
||||
RtlCopyMemory(pDriverCaps,&This->DirectDrawGlobal.ddHELCaps,sizeof(DDCORECAPS));
|
||||
status = DD_OK;
|
||||
}
|
||||
if (pHELCaps != NULL)
|
||||
{
|
||||
RtlCopyMemory(pDriverCaps,&This->DirectDrawGlobal.ddHELCaps,sizeof(DDCORECAPS));
|
||||
status = DD_OK;
|
||||
}
|
||||
|
||||
/* Both caps mixed ?? */
|
||||
/* DDCORECAPS ddBothCaps; */
|
||||
|
||||
return status;
|
||||
/* Both caps mixed ?? */
|
||||
/* DDCORECAPS ddBothCaps; */
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetDisplayMode(LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD)
|
||||
{
|
||||
IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
|
||||
IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
|
||||
|
||||
if (pDDSD == NULL)
|
||||
{
|
||||
if (pDDSD == NULL)
|
||||
{
|
||||
return DD_FALSE;
|
||||
}
|
||||
|
||||
pDDSD->dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_PITCH | DDSD_PIXELFORMAT | DDSD_REFRESHRATE | DDSD_WIDTH;
|
||||
pDDSD->dwHeight = This->DirectDrawGlobal.vmiData.dwDisplayHeight;
|
||||
pDDSD->dwWidth = This->DirectDrawGlobal.vmiData.dwDisplayWidth;
|
||||
|
||||
/* FIXME Do not use DUMMYUNIONNAME1 some how union lPitch does not see by the compiler
|
||||
but rest of the union are visable. more header problem ???
|
||||
*/
|
||||
pDDSD->lPitch = This->DirectDrawGlobal.vmiData.lDisplayPitch;
|
||||
|
||||
}
|
||||
|
||||
/* have not check where I should get hold of this info yet
|
||||
DWORD dwBackBufferCount;
|
||||
*/
|
||||
|
||||
pDDSD->dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_PITCH | DDSD_PIXELFORMAT | DDSD_REFRESHRATE | DDSD_WIDTH;
|
||||
pDDSD->dwHeight = This->DirectDrawGlobal.vmiData.dwDisplayHeight;
|
||||
pDDSD->dwWidth = This->DirectDrawGlobal.vmiData.dwDisplayWidth;
|
||||
pDDSD->lPitch = This->DirectDrawGlobal.vmiData.lDisplayPitch;
|
||||
pDDSD->dwRefreshRate = This->DirectDrawGlobal.dwMonitorFrequency;
|
||||
|
||||
/* have not check where I should get hold of this info yet */
|
||||
DWORD dwBackBufferCount;
|
||||
|
||||
/* have not check where I should get hold of this info yet
|
||||
/* have not check where I should get hold of this info yet
|
||||
DWORD dwAlphaBitDepth;
|
||||
DWORD dwReserved;
|
||||
LPVOID lpSurface;
|
||||
|
@ -345,123 +305,148 @@ HRESULT WINAPI Main_DirectDraw_GetDisplayMode(LPDIRECTDRAW7 iface, LPDDSURFACEDE
|
|||
DDCOLORKEY ddckCKDestBlt;
|
||||
DDCOLORKEY ddckCKSrcOverlay;
|
||||
DDCOLORKEY ddckCKSrcBlt;
|
||||
*/
|
||||
*/
|
||||
|
||||
|
||||
RtlCopyMemory(&pDDSD->ddpfPixelFormat,&This->DirectDrawGlobal.vmiData.ddpfDisplay,sizeof(DDPIXELFORMAT));
|
||||
RtlCopyMemory(&pDDSD->ddsCaps,&This->DirectDrawGlobal.ddCaps,sizeof(DDCORECAPS));
|
||||
|
||||
/* have not check where I should get hold of this info yet
|
||||
|
||||
/* have not check where I should get hold of this info yet
|
||||
DWORD dwTextureStage;
|
||||
*/
|
||||
|
||||
return DD_OK;
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetFourCCCodes(LPDIRECTDRAW7 iface, LPDWORD pNumCodes, LPDWORD pCodes)
|
||||
HRESULT WINAPI Main_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
||||
HANDLE h)
|
||||
{
|
||||
DX_STUB;
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_WAITFORVERTICALBLANK)
|
||||
{
|
||||
return Hal_DirectDraw_WaitForVerticalBlank( iface, dwFlags, h);
|
||||
}
|
||||
|
||||
return Hel_DirectDraw_WaitForVerticalBlank( iface, dwFlags, h);
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetGDISurface(LPDIRECTDRAW7 iface,
|
||||
LPDIRECTDRAWSURFACE7 *lplpGDIDDSSurface)
|
||||
{
|
||||
DX_STUB;
|
||||
HRESULT WINAPI Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps,
|
||||
LPDWORD total, LPDWORD free)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.dwFlags & DDHAL_MISCCB32_GETAVAILDRIVERMEMORY)
|
||||
{
|
||||
return Hal_DirectDraw_GetAvailableVidMem (iface,ddscaps,total,free);
|
||||
}
|
||||
|
||||
return Hel_DirectDraw_GetAvailableVidMem (iface,ddscaps,total,free);
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetMonitorFrequency(LPDIRECTDRAW7 iface,LPDWORD freq)
|
||||
{
|
||||
IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
|
||||
|
||||
if (freq == NULL)
|
||||
{
|
||||
return DD_FALSE;
|
||||
}
|
||||
if (freq == NULL)
|
||||
{
|
||||
return DD_FALSE;
|
||||
}
|
||||
|
||||
*freq = This->DirectDrawGlobal.dwMonitorFrequency;
|
||||
return DD_OK;
|
||||
*freq = This->DirectDrawGlobal.dwMonitorFrequency;
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScanLine)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_GETSCANLINE)
|
||||
{
|
||||
return Hal_DirectDraw_GetScanLine( iface, lpdwScanLine);
|
||||
}
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_GETSCANLINE)
|
||||
{
|
||||
return Hal_DirectDraw_GetScanLine( iface, lpdwScanLine);
|
||||
}
|
||||
|
||||
return Hel_DirectDraw_GetScanLine( iface, lpdwScanLine);
|
||||
return Hel_DirectDraw_GetScanLine( iface, lpdwScanLine);
|
||||
}
|
||||
|
||||
/********************************** Stubs **********************************/
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_Compact(LPDIRECTDRAW7 iface)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_DuplicateSurface(LPDIRECTDRAW7 iface, LPDIRECTDRAWSURFACE7 src,
|
||||
LPDIRECTDRAWSURFACE7* dst)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_EnumDisplayModes(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
||||
LPDDSURFACEDESC2 pDDSD, LPVOID context, LPDDENUMMODESCALLBACK2 callback)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_EnumSurfaces(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
||||
LPDDSURFACEDESC2 lpDDSD2, LPVOID context,
|
||||
LPDDENUMSURFACESCALLBACK7 callback)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetFourCCCodes(LPDIRECTDRAW7 iface, LPDWORD pNumCodes, LPDWORD pCodes)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetGDISurface(LPDIRECTDRAW7 iface,
|
||||
LPDIRECTDRAWSURFACE7 *lplpGDIDDSSurface)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetVerticalBlankStatus(LPDIRECTDRAW7 iface, LPBOOL status)
|
||||
{
|
||||
DX_STUB;
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_RestoreDisplayMode(LPDIRECTDRAW7 iface)
|
||||
{
|
||||
DX_STUB;
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
||||
HANDLE h)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_WAITFORVERTICALBLANK)
|
||||
{
|
||||
return Hal_DirectDraw_WaitForVerticalBlank( iface, dwFlags, h);
|
||||
}
|
||||
|
||||
return Hel_DirectDraw_WaitForVerticalBlank( iface, dwFlags, h);
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps,
|
||||
LPDWORD total, LPDWORD free)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.dwFlags & DDHAL_MISCCB32_GETAVAILDRIVERMEMORY)
|
||||
{
|
||||
return Hal_DirectDraw_GetAvailableVidMem (iface,ddscaps,total,free);
|
||||
}
|
||||
|
||||
return Hel_DirectDraw_GetAvailableVidMem (iface,ddscaps,total,free);
|
||||
}
|
||||
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetSurfaceFromDC(LPDIRECTDRAW7 iface, HDC hdc,
|
||||
LPDIRECTDRAWSURFACE7 *lpDDS)
|
||||
LPDIRECTDRAWSURFACE7 *lpDDS)
|
||||
{
|
||||
DX_STUB;
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_RestoreAllSurfaces(LPDIRECTDRAW7 iface)
|
||||
{
|
||||
DX_STUB;
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_TestCooperativeLevel(LPDIRECTDRAW7 iface)
|
||||
{
|
||||
DX_STUB;
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetDeviceIdentifier(LPDIRECTDRAW7 iface,
|
||||
LPDDDEVICEIDENTIFIER2 pDDDI, DWORD dwFlags)
|
||||
LPDDDEVICEIDENTIFIER2 pDDDI, DWORD dwFlags)
|
||||
{
|
||||
DX_STUB;
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_StartModeTest(LPDIRECTDRAW7 iface, LPSIZE pModes,
|
||||
DWORD dwNumModes, DWORD dwFlags)
|
||||
DWORD dwNumModes, DWORD dwFlags)
|
||||
{
|
||||
DX_STUB;
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_EvaluateMode(LPDIRECTDRAW7 iface,DWORD a,DWORD* b)
|
||||
{
|
||||
DX_STUB;
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
IDirectDraw7Vtbl DirectDraw7_Vtable =
|
||||
|
|
Loading…
Reference in a new issue