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; +} +