* Source cleanup.
[reactos.git] / reactos / lib / ddraw / main / ddraw_main.c
index dc984ea..88401bd 100644 (file)
@@ -82,18 +82,36 @@ HRESULT WINAPI Main_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface, HWND hw
 HRESULT WINAPI Main_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 iface, DWORD dwWidth, DWORD dwHeight, 
                                                                 DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags)
 {
-    DWORD ret;
-
-    /* FIXME implement hal setMode */
-    if((ret = Hal_DirectDraw_SetDisplayMode(iface,  dwWidth,  dwHeight, 
-                                            dwBPP,  dwRefreshRate,  dwFlags)) == DD_OK)
-    {
-        return ret;
+    IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+       BOOL dummy = TRUE;
+       DWORD ret;
+       
+       /* FIXME check the refresrate if it same if it not same do the mode switch */
+       if ((This->DirectDrawGlobal.vmiData.dwDisplayHeight == dwHeight) && 
+               (This->DirectDrawGlobal.vmiData.dwDisplayWidth == dwWidth)  && 
+               (This->DirectDrawGlobal.vmiData.ddpfDisplay.dwRGBBitCount == dwBPP))  
+               {
+          
+                 return DD_OK;
+               }
+
+       /* Check use the Hal or Hel for SetMode */
+       if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_SETMODE)
+       {
+               ret = Hal_DirectDraw_SetDisplayMode(iface, dwWidth, dwHeight, dwBPP, dwRefreshRate, dwFlags);       
     }    
-
-    ret = Hel_DirectDraw_SetDisplayMode(iface,  dwWidth,  dwHeight, dwBPP,  dwRefreshRate,  dwFlags);
-
-    return ret; 
+       else 
+       {
+               ret = Hel_DirectDraw_SetDisplayMode(iface, dwWidth, dwHeight, dwBPP, dwRefreshRate, dwFlags);
+       }
+       
+       if (ret == DD_OK)
+       {
+               DdReenableDirectDrawObject(&This->DirectDrawGlobal, &dummy);
+               /* FIXME fill the This->DirectDrawGlobal.vmiData right */
+       }
+  
+       return ret;
 }
 
 ULONG WINAPI Main_DirectDraw_AddRef (LPDIRECTDRAW7 iface) 
@@ -158,7 +176,7 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE
     if (pUnkOuter!=NULL) 
         return DDERR_INVALIDPARAMS; 
 
-    if(sizeof(DDSURFACEDESC2)!=pDDSD->dwSize)
+    if(sizeof(DDSURFACEDESC2)!=pDDSD->dwSize && sizeof(DDSURFACEDESC)!=pDDSD->dwSize)
         return DDERR_UNSUPPORTED;
 
     // the nasty com stuff
@@ -367,7 +385,7 @@ HRESULT WINAPI Main_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScan
 
 HRESULT WINAPI Main_DirectDraw_Compact(LPDIRECTDRAW7 iface) 
 {
-       DX_STUB;
+    DX_STUB;
 }
 
 HRESULT WINAPI Main_DirectDraw_DuplicateSurface(LPDIRECTDRAW7 iface, LPDIRECTDRAWSURFACE7 src,
@@ -392,13 +410,13 @@ HRESULT WINAPI Main_DirectDraw_EnumSurfaces(LPDIRECTDRAW7 iface, DWORD dwFlags,
 
 HRESULT WINAPI Main_DirectDraw_GetFourCCCodes(LPDIRECTDRAW7 iface, LPDWORD pNumCodes, LPDWORD pCodes)
 {
-       DX_STUB;
+    DX_STUB;
 }
 
 HRESULT WINAPI Main_DirectDraw_GetGDISurface(LPDIRECTDRAW7 iface, 
                                              LPDIRECTDRAWSURFACE7 *lplpGDIDDSSurface)
 {
-       DX_STUB;
+    DX_STUB;
 }
 
 HRESULT WINAPI Main_DirectDraw_GetVerticalBlankStatus(LPDIRECTDRAW7 iface, LPBOOL status)
@@ -408,40 +426,40 @@ HRESULT WINAPI Main_DirectDraw_GetVerticalBlankStatus(LPDIRECTDRAW7 iface, LPBOO
 
 HRESULT WINAPI Main_DirectDraw_RestoreDisplayMode(LPDIRECTDRAW7 iface)
 {
-       DX_STUB;
+    DX_STUB;
 }
                                                    
 HRESULT WINAPI Main_DirectDraw_GetSurfaceFromDC(LPDIRECTDRAW7 iface, HDC hdc,
                                                 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)
 {    
-       DX_STUB;
+    DX_STUB;
 }
 
 HRESULT WINAPI Main_DirectDraw_StartModeTest(LPDIRECTDRAW7 iface, LPSIZE pModes,
                   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 =