--- trunk/reactos/lib/ddraw/hal/ddraw.c 2005-10-29 16:00:00 UTC (rev 18853)
+++ trunk/reactos/lib/ddraw/hal/ddraw.c 2005-10-29 18:57:45 UTC (rev 18854)
@@ -23,9 +23,7 @@
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));
This->DirectDrawGlobal.lpD3DHALCallbacks = (ULONG_PTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY, sizeof(D3DHAL_CALLBACKS));
@@ -40,6 +38,7 @@
This->HalInfo.lpDDPaletteCallbacks = &This->DirectDrawGlobal.lpDDCBtmp->HALDDPalette;
This->HalInfo.lpDDSurfaceCallbacks = &This->DirectDrawGlobal.lpDDCBtmp->HALDDSurface;
+ /* FIXME The insate is not right we need the info that the three NULL return */
/* query all kinds of infos from the driver */
if(!DdQueryDirectDrawObject (
@@ -59,7 +58,11 @@
return 1;
}
- /* ms wants us to call that function twice */
+ /* FIXME The insate is not right we need the info that the three NULL return and use it here*/
+
+ /* Fixme shall we selected the pixel type before we call the DdQueryDirectDrawObject second time
+ and fill in more info ?? */
+
This->HalInfo.vmiData.pvmList = HeapAlloc(GetProcessHeap(), 0, sizeof(VIDMEM) * This->HalInfo.vmiData.dwNumHeaps);
This->DirectDrawGlobal.lpdwFourCC = HeapAlloc(GetProcessHeap(), 0, sizeof(DWORD) * This->HalInfo.ddCaps.dwNumFourCCCodes);
This->DirectDrawGlobal.lpZPixelFormats = HeapAlloc(GetProcessHeap(), 0, sizeof(DDPIXELFORMAT) * This->DirectDrawGlobal.dwNumZPixelFormats);
@@ -83,33 +86,27 @@
return 1;
}
- /* Copy HalInfo to DirectDrawGlobal */
-
- /* have not check where it should go into yet
- LPDDHAL_DDCALLBACKS lpDDCallbacks;
- LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks;
- LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks;
- */
-
+ /* 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;
/* have not check where it should go into yet
- LPDDHAL_GETDRIVERINFO GetDriverInfo;
+ This->HalInfo.GetDriverInfo datatype LPDDHAL_GETDRIVERINFO
*/
This->DirectDrawGlobal.dwModeIndex = This->HalInfo.dwModeIndex;
/* have not check where it should go into yet
- LPDWORD lpdwFourCC;
+ This->HalInfo.lpdwFourCC datatype LPDWORD
*/
This->DirectDrawGlobal.dwNumModes = This->HalInfo.dwNumModes;
This->DirectDrawGlobal.lpModeInfo = This->HalInfo.lpModeInfo;
/* have not check where it should go into yet
- DWORD dwFlags;
+ This->HalInfo.dwFlags data type DWORD
*/
/* Unsure which of these two for lpPDevice
@@ -120,18 +117,189 @@
This->DirectDrawGlobal.hInstance = This->HalInfo.hInstance;
/* have not check where it should go into yet
- ULONG_PTR lpD3DGlobalDriverData;
- ULONG_PTR lpD3DHALCallbacks;
- LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks;
+ This->lpD3DGlobalDriverData datatype ULONG_PTR
+ This->lpD3DHALCallbacks datatype ULONG_PTR
*/
+ 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 */
+ /************************************************************************/
+ /* Todo add a check see if HalInfo.GetDriverInfo is supported or not */
+
+ DDHAL_GETDRIVERINFODATA DriverInfo;
+ memset(&DriverInfo,0, sizeof(DDHAL_GETDRIVERINFODATA));
+ DriverInfo.dwSize = sizeof(DDHAL_GETDRIVERINFODATA);
+
+ /* Get ColorControlCallbacks */
+ DriverInfo.guidInfo = GUID_ColorControlCallbacks;
+ DriverInfo.lpvData = &This->DirectDrawGlobal.lpDDCBtmp->HALDDColorControl;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDCOLORCONTROLCALLBACKS);
+ This->HalInfo.GetDriverInfo( &DriverInfo);
+
- This->DirectDrawGlobal.lpDDCBtmp->HALDD = This->DirectDrawGlobal.lpDDCBtmp->cbDDCallbacks;
- This->DirectDrawGlobal.lpDDCBtmp->HALDDSurface = This->DirectDrawGlobal.lpDDCBtmp->cbDDSurfaceCallbacks;
- This->DirectDrawGlobal.lpDDCBtmp->HALDDExeBuf = This->DirectDrawGlobal.lpDDCBtmp->cbDDExeBufCallbacks;
- This->DirectDrawGlobal.lpDDCBtmp->HALDDPalette = This->DirectDrawGlobal.lpDDCBtmp->cbDDPaletteCallbacks;
+ /* Get the GUID_D3DCallbacks callback */
+ /* Problem with include files
+ DDHAL_DDMISCELLANEOUSCALLBACKS misc;
+ DriverInfo.guidInfo = GUID_D3DCallbacks;
+ DriverInfo.lpvData = &misc;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
+ This->HalInfo.GetDriverInfo( &DriverInfo);*/
+
+ /* Get the D3DCallbacks2 */
+ /* do we need alloc memmory for This->DirectDrawGlobal.lpD3DHALCallbacks2 */
+ DriverInfo.guidInfo = GUID_D3DCallbacks2;
+ DriverInfo.lpvData = &This->DirectDrawGlobal.lpD3DHALCallbacks2;
+ DriverInfo.dwExpectedSize = sizeof(D3DHAL_CALLBACKS2);
+ This->HalInfo.GetDriverInfo( &DriverInfo);
+
+
+ /* Get the D3DCallbacks3 */
+ /*
+ DriverInfo.guidInfo = GUID_D3DCallbacks3;
+ DriverInfo.lpvData = &misc;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
+ This->HalInfo.GetDriverInfo( &DriverInfo);
+ */
+
+ /* Get the misc callback */
+ /* Problem with include files
+ DriverInfo.guidInfo = GUID_D3DCaps;
+ DriverInfo.lpvData = &misc;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
+ This->HalInfo.GetDriverInfo( &DriverInfo);
+ */
+
+ /* Get the D3DExtendedCaps */
+ /*
+ DriverInfo.guidInfo = GUID_D3DExtendedCaps;
+ DriverInfo.lpvData = &misc;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
+ This->HalInfo.GetDriverInfo( &DriverInfo);
+ */
+
+ /* Get the D3DParseUnknownCommandCallback */
+ /*
+ DriverInfo.guidInfo = GUID_D3DParseUnknownCommandCallback;
+ DriverInfo.lpvData = &misc;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
+ This->HalInfo.GetDriverInfo( &DriverInfo);
+ */
+
+ /* Get the GetHeapAlignment */
+ /*
+ DriverInfo.guidInfo = GUID_GetHeapAlignment;
+ DriverInfo.lpvData = &misc;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
+ 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 */
+ /*
+ DriverInfo.guidInfo = GUID_KernelCaps;
+ DriverInfo.lpvData = &misc;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
+ 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 */
+ /*
+ DriverInfo.guidInfo = GUID_Miscellaneous2Callbacks;
+ DriverInfo.lpvData = &misc;
+ 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 */
+ /*
+ DriverInfo.guidInfo = GUID_NonLocalVidMemCaps;
+ DriverInfo.lpvData = &misc;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
+ This->HalInfo.GetDriverInfo( &DriverInfo);
+ */
+
+ /* Get the NTCallbacks */
+ /*
+ DriverInfo.guidInfo = GUID_NTCallbacks;
+ DriverInfo.lpvData = &misc;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
+ This->HalInfo.GetDriverInfo( &DriverInfo);
+ */
+
+ /* Get the NTPrivateDriverCaps */
+ /*
+ DriverInfo.guidInfo = GUID_NTPrivateDriverCaps;
+ DriverInfo.lpvData = &misc;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
+ This->HalInfo.GetDriverInfo( &DriverInfo);
+ */
+
+ /* Get the UpdateNonLocalHeap */
+ /*
+ DriverInfo.guidInfo = GUID_UpdateNonLocalHeap;
+ DriverInfo.lpvData = &misc;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
+ This->HalInfo.GetDriverInfo( &DriverInfo);
+ */
+
+ /* Get the VideoPortCallbacks */
+ /* Problem with include files
+ DriverInfo.guidInfo = GUID_VideoPortCallbacks;
+ DriverInfo.lpvData = &This->DirectDrawGlobal.lpDDCBtmp->HALDDVideoPort;
+ DriverInfo.dwExpectedSize = sizeof(HALDDVideoPort);
+ This->HalInfo.GetDriverInfo( &DriverInfo);
+ */
+
+
+ /* Get the VideoPortCaps */
+ /*
+ DriverInfo.guidInfo = GUID_VideoPortCaps;
+ DriverInfo.lpvData = &misc;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
+ This->HalInfo.GetDriverInfo( &DriverInfo);
+ */
+
+ /* Get the ZPixelFormats */
+ /*
+ DriverInfo.guidInfo = GUID_ZPixelFormats;
+ DriverInfo.lpvData = &misc;
+ DriverInfo.dwExpectedSize = sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS);
+ This->HalInfo.GetDriverInfo( &DriverInfo);
+ */
+
+
+ /* FIXME add setup for one call ot get memmory */
+
+
+ /* now all insate of HAL is done and we hopply do not have forget anything*/
+
return DD_OK;
}