From 0a695e75389b86208277be7e3a0940ceb3e1cb9a Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Sun, 30 Oct 2005 08:41:19 +0000 Subject: [PATCH] implement Hal GetScanLine svn path=/trunk/; revision=18871 --- reactos/lib/ddraw/hal/ddraw.c | 23 +++++++++++++++++++++++ reactos/lib/ddraw/main/ddraw.c | 11 +++++++++-- reactos/lib/ddraw/main/surface.c | 2 +- reactos/lib/ddraw/rosdraw.h | 3 +++ reactos/lib/ddraw/soft/ddraw.c | 5 +++++ 5 files changed, 41 insertions(+), 3 deletions(-) diff --git a/reactos/lib/ddraw/hal/ddraw.c b/reactos/lib/ddraw/hal/ddraw.c index bf4f2a61940..de875ac1129 100644 --- a/reactos/lib/ddraw/hal/ddraw.c +++ b/reactos/lib/ddraw/hal/ddraw.c @@ -410,3 +410,26 @@ HRESULT Hal_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD dwFlags,H return WaitVectorData.ddRVal; } + +HRESULT Hal_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScanLine) +{ + IDirectDrawImpl* This = (IDirectDrawImpl*)iface; + + DDHAL_GETSCANLINEDATA GetScan; + + if (!(This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.dwFlags & DDHAL_CB32_GETSCANLINE)) + { + return DDERR_NODRIVERSUPPORT; + } + + GetScan.lpDD = &This->DirectDrawGlobal; + GetScan.ddRVal = DDERR_NOTPALETTIZED; + + if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.GetScanLine(&GetScan) != DDHAL_DRIVER_HANDLED) + { + return DDERR_NODRIVERSUPPORT; + } + + *lpdwScanLine = GetScan.ddRVal; + return GetScan.ddRVal; +} diff --git a/reactos/lib/ddraw/main/ddraw.c b/reactos/lib/ddraw/main/ddraw.c index 990e639f8ca..ce80dfa429e 100644 --- a/reactos/lib/ddraw/main/ddraw.c +++ b/reactos/lib/ddraw/main/ddraw.c @@ -391,7 +391,15 @@ HRESULT WINAPI Main_DirectDraw_GetMonitorFrequency(LPDIRECTDRAW7 iface,LPDWORD f HRESULT WINAPI Main_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScanLine) { - DX_STUB; + DWORD ret; + + if((ret = Hal_DirectDraw_GetScanLine( iface, lpdwScanLine)) == DD_OK) + return ret; + + if((ret = Hel_DirectDraw_GetScanLine( iface, lpdwScanLine)) == DD_OK) + return ret; + + return DDERR_NOTINITIALIZED; } HRESULT WINAPI Main_DirectDraw_GetVerticalBlankStatus(LPDIRECTDRAW7 iface, LPBOOL status) @@ -407,7 +415,6 @@ HRESULT WINAPI Main_DirectDraw_RestoreDisplayMode(LPDIRECTDRAW7 iface) HRESULT WINAPI Main_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD dwFlags, HANDLE h) { - DWORD ret; if((ret = Hal_DirectDraw_WaitForVerticalBlank( iface, dwFlags, h)) == DD_OK) diff --git a/reactos/lib/ddraw/main/surface.c b/reactos/lib/ddraw/main/surface.c index fb758c0129b..1bc261a5ac8 100644 --- a/reactos/lib/ddraw/main/surface.c +++ b/reactos/lib/ddraw/main/surface.c @@ -81,7 +81,7 @@ HRESULT WINAPI Main_DDrawSurface_Initialize (LPDIRECTDRAWSURFACE7 iface, LPDIREC CreateData.lplpSList = pLocal; /* this is the call we were waiting for */ - if(CreateData.CreateSurface(&CreateData) == DDHAL_DRIVER_NOTHANDLED) + if(This->owner->DirectDrawGlobal.lpDDCBtmp->HALDD.CreateSurface(&CreateData) == DDHAL_DRIVER_NOTHANDLED) return DDERR_INVALIDPARAMS; if(CreateData.ddRVal != DD_OK) diff --git a/reactos/lib/ddraw/rosdraw.h b/reactos/lib/ddraw/rosdraw.h index ba9c30c44a4..50ec596a245 100644 --- a/reactos/lib/ddraw/rosdraw.h +++ b/reactos/lib/ddraw/rosdraw.h @@ -94,6 +94,7 @@ HRESULT Hal_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscap HRESULT Hal_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD dwFlags, HANDLE h); +HRESULT Hal_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScanLine); HRESULT Hel_DirectDraw_Initialize (LPDIRECTDRAW7 iface); @@ -106,6 +107,8 @@ HRESULT Hel_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscap HRESULT Hel_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD dwFlags, HANDLE h); +HRESULT Hel_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScanLine); + /*********** Macros ***********/ diff --git a/reactos/lib/ddraw/soft/ddraw.c b/reactos/lib/ddraw/soft/ddraw.c index ccaf8004d52..786690b59a2 100644 --- a/reactos/lib/ddraw/soft/ddraw.c +++ b/reactos/lib/ddraw/soft/ddraw.c @@ -37,3 +37,8 @@ HRESULT Hel_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD dwFlags,H { DX_STUB; } + +HRESULT Hel_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScanLine) +{ + DX_STUB; +} -- 2.17.1