fixing more value that are not beig fill in, now we getting back the freq
authorMagnus Olsen <magnus@greatlord.com>
Sun, 24 Jun 2007 13:20:44 +0000 (13:20 +0000)
committerMagnus Olsen <magnus@greatlord.com>
Sun, 24 Jun 2007 13:20:44 +0000 (13:20 +0000)
svn path=/trunk/; revision=27270

reactos/dll/directx/ddraw/startup.c

index 968baec..c010cce 100644 (file)
@@ -174,6 +174,7 @@ StartDirectDraw(LPDIRECTDRAW iface, LPGUID lpGuid, BOOL reenable)
     DWORD hel_ret = DD_FALSE;
     DWORD devicetypes = 0;
     DWORD dwFlags = 0;
+    DEVMODE devmode;
 
     DX_WINDBG_trace();
 
@@ -334,6 +335,29 @@ StartDirectDraw(LPDIRECTDRAW iface, LPGUID lpGuid, BOOL reenable)
     ddgbl.rectDesktop.right = ddgbl.vmiData.dwDisplayWidth;
     ddgbl.rectDesktop.right = ddgbl.vmiData.dwDisplayHeight;
 
+
+    /* HALINFO always returen false for lpModeInfo */
+    DxHeapMemAlloc(ddgbl.lpModeInfo, sizeof(DDHALMODEINFO));
+    if (!ddgbl.lpModeInfo)
+    {
+       return DDERR_OUTOFMEMORY;
+    }
+    
+    
+    EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devmode);
+    ddgbl.lpModeInfo->dwWidth      = devmode.dmPelsWidth;
+    ddgbl.lpModeInfo->dwHeight     = devmode.dmPelsHeight;
+    ddgbl.lpModeInfo->dwBPP        = devmode.dmBitsPerPel;
+    ddgbl.lpModeInfo->lPitch       = ddgbl.vmiData.lDisplayPitch;
+    ddgbl.lpModeInfo->wRefreshRate = (WORD)devmode.dmDisplayFrequency;
+    ddgbl.lpModeInfo->dwRBitMask = ddgbl.vmiData.ddpfDisplay.dwRBitMask;
+    ddgbl.lpModeInfo->dwGBitMask = ddgbl.vmiData.ddpfDisplay.dwGBitMask;
+    ddgbl.lpModeInfo->dwBBitMask = ddgbl.vmiData.ddpfDisplay.dwBBitMask;
+    ddgbl.lpModeInfo->dwAlphaBitMask = ddgbl.vmiData.ddpfDisplay.dwRGBAlphaBitMask;
+    ddgbl.dwMonitorFrequency = ddgbl.lpModeInfo->wRefreshRate;
+    ddgbl.dwNumModes = 1;
+    ddgbl.dwSaveNumModes = 1;
+
     DX_STUB_str("DD_OK\n");
     return DD_OK;
 }
@@ -516,18 +540,20 @@ StartDirectDrawHal(LPDIRECTDRAW iface, BOOL reenable)
 
 
     /* Alloc mpTextures */
-#if 0
+
     DX_STUB_str("1 Here\n");
 
+    /*
     if (This->lpLcl->lpGbl->texture != NULL)
     {
-        DxHeapMemFree(This->lpLcl->lpGbl->texture;
+        DxHeapMemFree(This->lpLcl->lpGbl->);
     }
+    */
 
     mpTextures = NULL;
     if (mD3dDriverData.dwNumTextureFormats > 0)
     {
-        mpTextures = (DDSURFACEDESC*) DxHeapMemAlloc(sizeof(DDSURFACEDESC) * mD3dDriverData.dwNumTextureFormats);
+        DxHeapMemAlloc(mpTextures, sizeof(DDSURFACEDESC) * mD3dDriverData.dwNumTextureFormats);
         if (mpTextures == NULL)
         {
             DxHeapMemFree(mpFourCC);
@@ -538,9 +564,7 @@ StartDirectDrawHal(LPDIRECTDRAW iface, BOOL reenable)
 
     DX_STUB_str("2 Here\n");
 
-#else
-      mpTextures = NULL;
-#endif
+
 
 
     /* Get all basic data from the driver */
@@ -571,10 +595,10 @@ StartDirectDrawHal(LPDIRECTDRAW iface, BOOL reenable)
 
     This->lpLcl->lpGbl->dwNumFourCC        = mHALInfo.ddCaps.dwNumFourCCCodes;
     This->lpLcl->lpGbl->lpdwFourCC         = mpFourCC;
-    This->lpLcl->lpGbl->dwMonitorFrequency = mHALInfo.dwMonitorFrequency;     // 0
+    // This->lpLcl->lpGbl->dwMonitorFrequency = mHALInfo.dwMonitorFrequency;     // 0
     This->lpLcl->lpGbl->dwModeIndex        = mHALInfo.dwModeIndex;
-    This->lpLcl->lpGbl->dwNumModes         = mHALInfo.dwNumModes;
-    This->lpLcl->lpGbl->lpModeInfo         = mHALInfo.lpModeInfo;
+    // This->lpLcl->lpGbl->dwNumModes         = mHALInfo.dwNumModes;
+    // This->lpLcl->lpGbl->lpModeInfo         = mHALInfo.lpModeInfo;
 
     DX_STUB_str("Here\n");