[ros-diffs] [greatlrd] 23493: Bugfix DirectDraw_AddRef

greatlrd at svn.reactos.org greatlrd at svn.reactos.org
Sun Aug 6 11:56:22 CEST 2006


Author: greatlrd
Date: Sun Aug  6 13:56:21 2006
New Revision: 23493

URL: http://svn.reactos.org/svn/reactos?rev=23493&view=rev
Log:
Bugfix DirectDraw_AddRef 

Modified:
    trunk/reactos/dll/directx/ddraw/main/ddraw_main.c
    trunk/reactos/dll/directx/ddraw/rosdraw.h
    trunk/reactos/dll/directx/ddraw/startup.c

Modified: trunk/reactos/dll/directx/ddraw/main/ddraw_main.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/main/ddraw_main.c?rev=23493&r1=23492&r2=23493&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/main/ddraw_main.c (original)
+++ trunk/reactos/dll/directx/ddraw/main/ddraw_main.c Sun Aug  6 13:56:21 2006
@@ -61,13 +61,18 @@
     DX_WINDBG_trace();
 
     IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
-	ULONG ref=0;
-    
+	   
 	if (iface!=NULL)
 	{
-        ref = InterlockedIncrement(  (PLONG) &This->mDDrawLocal.dwLocalRefCnt);       
+		This->mDDrawLocal.dwLocalRefCnt++;
+        This->Ref++;  
+
+		if (This->mDDrawLocal.lpGbl != NULL)
+		{
+			This->mDDrawLocal.lpGbl->dwRefCnt++;
+		}
 	}    
-    return ref;
+    return This->Ref;
 }
 
 /*
@@ -81,13 +86,18 @@
     DX_WINDBG_trace();
 
     IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
-	ULONG ref=0;
-
+	
 	if (iface!=NULL)
 	{	  	
-		ref = InterlockedDecrement( (PLONG) &This->mDDrawLocal.dwLocalRefCnt);
+		This->mDDrawLocal.dwLocalRefCnt--;
+        This->Ref--;  
+
+		if (This->mDDrawLocal.lpGbl != NULL)
+		{
+			This->mDDrawLocal.lpGbl->dwRefCnt--;
+		}
             
-		if (ref == 0)
+		if ( This->Ref == 0)
 		{
 			// set resoltion back to the one in registry
 			if(This->cooperative_level & DDSCL_EXCLUSIVE)
@@ -102,7 +112,7 @@
             }
 		}
     }
-    return ref;
+    return This->Ref;
 }
 
 /*

Modified: trunk/reactos/dll/directx/ddraw/rosdraw.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/rosdraw.h?rev=23493&r1=23492&r2=23493&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/rosdraw.h (original)
+++ trunk/reactos/dll/directx/ddraw/rosdraw.h Sun Aug  6 13:56:21 2006
@@ -49,6 +49,8 @@
 	IDirectDraw4Vtbl* lpVtbl_v4;
 	IDirectDraw2Vtbl* lpVtbl_v2;
 	IDirectDrawVtbl*  lpVtbl_v1;
+
+	ULONG Ref;
 
 	/* The main struct that contain all info from the HAL and HEL */	
 	HDC hdc;

Modified: trunk/reactos/dll/directx/ddraw/startup.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/startup.c?rev=23493&r1=23492&r2=23493&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/startup.c (original)
+++ trunk/reactos/dll/directx/ddraw/startup.c Sun Aug  6 13:56:21 2006
@@ -212,7 +212,8 @@
     /* Setup calback struct so we do not need refill same info again */
     This->mDdCreateSurface.lpDD = &This->mDDrawGlobal;    
     This->mDdCanCreateSurface.lpDD = &This->mDDrawGlobal;  
-                  
+       
+	This->mDDrawLocal.lpGbl = &This->mDDrawGlobal;
     return DD_OK;
 }
 




More information about the Ros-diffs mailing list