[ros-diffs] [greatlrd] 21573: Implement surface unlock

greatlrd at svn.reactos.org greatlrd at svn.reactos.org
Thu Apr 13 08:29:02 CEST 2006


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/surface_hal.c?rev=21573&r1=21572&r2=21573&view=diff
==============================================================================
--- 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)




More information about the Ros-diffs mailing list