implment Hal FlipToGDISurface
Modified: trunk/reactos/lib/ddraw/hal/ddraw.c
Modified: trunk/reactos/lib/ddraw/main/ddraw.c
Modified: trunk/reactos/lib/ddraw/rosdraw.h
Modified: trunk/reactos/lib/ddraw/soft/ddraw.c

Modified: trunk/reactos/lib/ddraw/hal/ddraw.c
--- trunk/reactos/lib/ddraw/hal/ddraw.c	2005-10-30 08:46:46 UTC (rev 18872)
+++ trunk/reactos/lib/ddraw/hal/ddraw.c	2005-10-30 09:21:03 UTC (rev 18873)
@@ -393,7 +393,7 @@
 
 	DDHAL_WAITFORVERTICALBLANKDATA WaitVectorData;
 
-	if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.dwFlags & DDHAL_CB32_WAITFORVERTICALBLANK)) 
+	if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_WAITFORVERTICALBLANK)) 
 	{
 		return DDERR_NODRIVERSUPPORT;
 	}
@@ -417,7 +417,7 @@
 
     DDHAL_GETSCANLINEDATA GetScan;
 
-	if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.dwFlags & DDHAL_CB32_GETSCANLINE)) 
+	if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_GETSCANLINE)) 
 	{
 		return DDERR_NODRIVERSUPPORT;
 	}
@@ -433,3 +433,26 @@
 	*lpdwScanLine = GetScan.ddRVal;
 	return  GetScan.ddRVal;
 }
+
+HRESULT Hal_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 iface) 
+{
+	IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+
+	DDHAL_FLIPTOGDISURFACEDATA FlipGdi;
+
+	if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_FLIPTOGDISURFACE)) 
+	{
+		return DDERR_NODRIVERSUPPORT;
+	}
+
+	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;
+}

Modified: trunk/reactos/lib/ddraw/main/ddraw.c
--- trunk/reactos/lib/ddraw/main/ddraw.c	2005-10-30 08:46:46 UTC (rev 18872)
+++ trunk/reactos/lib/ddraw/main/ddraw.c	2005-10-30 09:21:03 UTC (rev 18873)
@@ -287,7 +287,15 @@
 
 HRESULT WINAPI Main_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 iface) 
 {
-	DX_STUB;
+	DWORD ret;
+
+	if((ret = Hal_DirectDraw_FlipToGDISurface( iface)) == DD_OK)
+		return ret;
+
+	if((ret = Hel_DirectDraw_FlipToGDISurface( iface)) == DD_OK)
+		return ret;
+
+	return DDERR_NOTINITIALIZED;  
 }
 
 HRESULT WINAPI Main_DirectDraw_GetCaps(LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps,

Modified: trunk/reactos/lib/ddraw/rosdraw.h
--- trunk/reactos/lib/ddraw/rosdraw.h	2005-10-30 08:46:46 UTC (rev 18872)
+++ trunk/reactos/lib/ddraw/rosdraw.h	2005-10-30 09:21:03 UTC (rev 18873)
@@ -95,8 +95,11 @@
 					HANDLE h); 
 
 HRESULT Hal_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScanLine);
+HRESULT Hal_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 iface); 
 
 
+
+
 HRESULT Hel_DirectDraw_Initialize (LPDIRECTDRAW7 iface);
 HRESULT Hel_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface);
 VOID Hel_DirectDraw_Release (LPDIRECTDRAW7 iface);
@@ -108,9 +111,9 @@
 					HANDLE h); 
 
 HRESULT Hel_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScanLine);
+HRESULT Hel_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 iface);
 
 
-
 /*********** Macros ***********/
 
 #define DX_STUB \

Modified: trunk/reactos/lib/ddraw/soft/ddraw.c
--- trunk/reactos/lib/ddraw/soft/ddraw.c	2005-10-30 08:46:46 UTC (rev 18872)
+++ trunk/reactos/lib/ddraw/soft/ddraw.c	2005-10-30 09:21:03 UTC (rev 18873)
@@ -42,3 +42,9 @@
 {
 	DX_STUB;
 }
+
+HRESULT Hel_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 iface) 
+{
+	DX_STUB;
+}
+