Setup the hal inisate bit more. and commect the code. We still does not insate hal...
[reactos.git] / reactos / lib / ddraw / hal / ddraw.c
index fc7bf96..b678c02 100644 (file)
@@ -23,9 +23,7 @@ HRESULT Hal_DirectDraw_Initialize (LPDIRECTDRAW7 iface)
        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 @@ HRESULT Hal_DirectDraw_Initialize (LPDIRECTDRAW7 iface)
        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 @@ HRESULT Hal_DirectDraw_Initialize (LPDIRECTDRAW7 iface)
                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 @@ HRESULT Hal_DirectDraw_Initialize (LPDIRECTDRAW7 iface)
                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,17 +117,188 @@ HRESULT Hal_DirectDraw_Initialize (LPDIRECTDRAW7 iface)
     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);
+
+       
+       /* 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);
+       */
        
-       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;
+       
+       /* 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;
 }