Author: greatlrd Date: Thu Apr 13 10:29:01 2006 New Revision: 21573
URL: http://svn.reactos.ru/svn/reactos?rev=21573&view=rev Log: Implement surface unlock
Modified: trunk/reactos/dll/directx/ddraw/hal/surface_hal.c
Modified: trunk/reactos/dll/directx/ddraw/hal/surface_hal.c URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/dll/directx/ddraw/hal/surfac... ============================================================================== --- trunk/reactos/dll/directx/ddraw/hal/surface_hal.c (original) +++ trunk/reactos/dll/directx/ddraw/hal/surface_hal.c Thu Apr 13 10:29:01 2006 @@ -93,7 +93,7 @@ {
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface; - + DDHAL_LOCKDATA Lock;
if (prect!=NULL) @@ -115,16 +115,19 @@
if (!DdResetVisrgn(&This->Surf->mPrimaryLocal, NULL)) { - // derr(L"DirectDrawImpl[%08x]::_clear DdResetVisrgn failed", this); + OutputDebugStringA("Here DdResetVisrgn lock"); + return DDERR_UNSUPPORTED; }
if (Lock.Lock(&Lock)!= DDHAL_DRIVER_HANDLED) { - return DDERR_LOCKEDSURFACES; + OutputDebugStringA("Here DDHAL_DRIVER_HANDLED lock"); + return DDERR_UNSUPPORTED; }
if (Lock.ddRVal!= DD_OK) { + OutputDebugStringA("Here ddRVal lock"); return Lock.ddRVal; }
@@ -138,8 +141,33 @@ return DD_OK; } HRESULT Hal_DDrawSurface_Unlock(LPDIRECTDRAWSURFACE7 iface, LPRECT pRect) -{ - DX_STUB; +{ + IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface; + + DDHAL_UNLOCKDATA unLock; + unLock.ddRVal = DDERR_NOTPALETTIZED; + unLock.lpDD = &This->owner->mDDrawGlobal; + unLock.lpDDSurface = &This->Surf->mPrimaryLocal; + unLock.Unlock = This->owner->mCallbacks.HALDDSurface.Unlock; + + + + if (!DdResetVisrgn( unLock.lpDDSurface, NULL)) + { + return DDERR_UNSUPPORTED; + } + + if (unLock.Unlock(&unLock)!= DDHAL_DRIVER_HANDLED) + { + return DDERR_UNSUPPORTED; + } + + if (unLock.ddRVal!= DD_OK) + { + return unLock.ddRVal; + } + + return DD_OK; }
HRESULT Hal_DDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface, LPDIRECTDRAWSURFACE7 override, DWORD dwFlags)