mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-01 19:26:16 +00:00
Bugfix DirectDraw_AddRef
svn path=/trunk/; revision=23493
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user