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/ddra... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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; }