Bugfix DirectDraw_AddRef

svn path=/trunk/; revision=23493
This commit is contained in:
Magnus Olsen
2006-08-06 09:56:21 +00:00
parent f5b7920569
commit 1df8bd39ee
3 changed files with 23 additions and 10 deletions
+19 -9
View File
@@ -61,13 +61,18 @@ Main_DirectDraw_AddRef (LPDIRECTDRAW7 iface)
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 @@ Main_DirectDraw_Release (LPDIRECTDRAW7 iface)
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 @@ Main_DirectDraw_Release (LPDIRECTDRAW7 iface)
}
}
}
return ref;
return This->Ref;
}
/*
+2
View File
@@ -50,6 +50,8 @@ typedef struct
IDirectDraw2Vtbl* lpVtbl_v2;
IDirectDrawVtbl* lpVtbl_v1;
ULONG Ref;
/* The main struct that contain all info from the HAL and HEL */
HDC hdc;
DDRAWI_DIRECTDRAW_GBL mDDrawGlobal;
+2 -1
View File
@@ -212,7 +212,8 @@ StartDirectDraw(LPDIRECTDRAW* iface)
/* 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;
}