Fix broke SVN after me, thx to it I found wrong ref was release in
different place fixed
Modified: trunk/reactos/lib/ddraw/main/clipper_main.c
Modified: trunk/reactos/lib/ddraw/main/color_main.c
Modified: trunk/reactos/lib/ddraw/main/gamma_main.c
Modified: trunk/reactos/lib/ddraw/main/palette_main.c
Modified: trunk/reactos/lib/ddraw/main/surface_main.c
Modified: trunk/reactos/lib/ddraw/rosdraw.h
_____
Modified: trunk/reactos/lib/ddraw/main/clipper_main.c
--- trunk/reactos/lib/ddraw/main/clipper_main.c 2005-10-30 15:45:40 UTC
(rev 18886)
+++ trunk/reactos/lib/ddraw/main/clipper_main.c 2005-10-30 16:14:42 UTC
(rev 18887)
@@ -13,8 +13,8 @@
ULONG WINAPI Main_DirectDrawClipper_Release(LPDIRECTDRAWCLIPPER iface)
{
- IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
- ULONG ref = InterlockedDecrement(&This->ref);
+ IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+ ULONG ref = InterlockedDecrement(&This->DirectDrawGlobal.dwRefCnt);
if (ref == 0)
HeapFree(GetProcessHeap(), 0, This);
_____
Modified: trunk/reactos/lib/ddraw/main/color_main.c
--- trunk/reactos/lib/ddraw/main/color_main.c 2005-10-30 15:45:40 UTC
(rev 18886)
+++ trunk/reactos/lib/ddraw/main/color_main.c 2005-10-30 16:14:42 UTC
(rev 18887)
@@ -22,8 +22,8 @@
ULONG WINAPI
Main_DirectDrawColorControl_Release(LPDIRECTDRAWCOLORCONTROL iface)
{
- IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
- ULONG ref = InterlockedDecrement(&This->ref);
+ IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+ ULONG ref = InterlockedDecrement(&This->DirectDrawGlobal.dwRefCnt);
if (ref == 0)
HeapFree(GetProcessHeap(), 0, This);
_____
Modified: trunk/reactos/lib/ddraw/main/gamma_main.c
--- trunk/reactos/lib/ddraw/main/gamma_main.c 2005-10-30 15:45:40 UTC
(rev 18886)
+++ trunk/reactos/lib/ddraw/main/gamma_main.c 2005-10-30 16:14:42 UTC
(rev 18887)
@@ -22,8 +22,8 @@
ULONG WINAPI
Main_DirectDrawGammaControl_Release(LPDIRECTDRAWGAMMACONTROL iface)
{
- IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
- ULONG ref = InterlockedDecrement(&This->ref);
+ IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+ ULONG ref = InterlockedDecrement(&This->DirectDrawGlobal.dwRefCnt);
if (ref == 0)
HeapFree(GetProcessHeap(), 0, This);
_____
Modified: trunk/reactos/lib/ddraw/main/palette_main.c
--- trunk/reactos/lib/ddraw/main/palette_main.c 2005-10-30 15:45:40 UTC
(rev 18886)
+++ trunk/reactos/lib/ddraw/main/palette_main.c 2005-10-30 16:14:42 UTC
(rev 18887)
@@ -21,8 +21,8 @@
ULONG WINAPI Main_DirectDrawPalette_AddRef(LPDIRECTDRAWPALETTE iface)
{
- IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
- ULONG ref = InterlockedDecrement(&This->ref);
+ IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+ ULONG ref = InterlockedDecrement(&This->DirectDrawGlobal.dwRefCnt);
if (ref == 0)
HeapFree(GetProcessHeap(), 0, This);
_____
Modified: trunk/reactos/lib/ddraw/main/surface_main.c
--- trunk/reactos/lib/ddraw/main/surface_main.c 2005-10-30 15:45:40 UTC
(rev 18886)
+++ trunk/reactos/lib/ddraw/main/surface_main.c 2005-10-30 16:14:42 UTC
(rev 18887)
@@ -94,13 +94,14 @@
ULONG WINAPI Main_DDrawSurface_AddRef(LPDIRECTDRAWSURFACE7 iface)
{
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
- return InterlockedIncrement(&This->ref);
+
+ return
InterlockedIncrement(&This->owner->DirectDrawGlobal.dsList->dwIntRefCnt)
;
}
ULONG WINAPI Main_DDrawSurface_Release(LPDIRECTDRAWSURFACE7 iface)
{
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
- ULONG ref = InterlockedDecrement(&This->ref);
+ ULONG ref =
InterlockedDecrement(&This->owner->DirectDrawGlobal.dsList->dwIntRefCnt)
;
if (ref == 0)
HeapFree(GetProcessHeap(), 0, This);
_____
Modified: trunk/reactos/lib/ddraw/rosdraw.h
--- trunk/reactos/lib/ddraw/rosdraw.h 2005-10-30 15:45:40 UTC (rev
18886)
+++ trunk/reactos/lib/ddraw/rosdraw.h 2005-10-30 16:14:42 UTC (rev
18887)
@@ -41,6 +41,10 @@
IDirectDrawImpl* owner;
+ DDRAWI_DDRAWSURFACE_GBL Global;
+ DDRAWI_DDRAWSURFACE_MORE More;
+ DDRAWI_DDRAWSURFACE_LCL Local;
+
} IDirectDrawSurfaceImpl;
/******** Clipper Object ********/
Show replies by date