fix a memmory leak in create surface
authorMagnus Olsen <magnus@greatlord.com>
Wed, 5 Apr 2006 10:16:11 +0000 (10:16 +0000)
committerMagnus Olsen <magnus@greatlord.com>
Wed, 5 Apr 2006 10:16:11 +0000 (10:16 +0000)
svn path=/trunk/; revision=21461

reactos/dll/directx/ddraw/hal/surface_hal.c
reactos/dll/directx/ddraw/main/ddraw_main.c

index d2da7a2..b7d1dce 100644 (file)
@@ -66,7 +66,7 @@ HRESULT Hal_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDS
   mDdCreateSurface.CreateSurface = This->mCallbacks.HALDD.CreateSurface;  
   mDdCreateSurface.lpDDSurfaceDesc = &This->mddsdPrimary;//pDDSD;
   mDdCreateSurface.lplpSList = This->mpPrimaryLocals; //cSurfaces;
-  mDdCreateSurface.dwSCnt = 1 ;  //ppSurfaces;
+  mDdCreateSurface.dwSCnt = This->mDDrawGlobal.dsList->dwIntRefCnt ;  //ppSurfaces;
 
   if (This->mHALInfo.lpDDCallbacks->CreateSurface(&mDdCreateSurface) == DDHAL_DRIVER_NOTHANDLED)
   {
@@ -138,8 +138,7 @@ HRESULT Hal_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDS
    
    if (This->mHALInfo.lpDDCallbacks->CanCreateSurface(&mDdCanCreateSurface)== DDHAL_DRIVER_NOTHANDLED) 
    {
-    // derr(L"DirectDrawImpl[%08x]::__createPrimary Cannot create primary [%08x]", this, rv);
-    return DDERR_NOTINITIALIZED;
+     return DDERR_NOTINITIALIZED;
    }
 
    if (mDdCanCreateSurface.ddRVal != DD_OK)
@@ -181,7 +180,7 @@ HRESULT Hal_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDS
     This->mpOverlayLocals[i] = &This->mOverlayLocal[i];
   }
 
-  for (i = 0; i < cSurfaces; i++)
+  for ( i = 0; i < cSurfaces; i++)
   {
     UINT j = (i + 1) % cSurfaces;
 
index d4ab25c..16cc4f3 100644 (file)
@@ -275,6 +275,7 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE
                ret = Hel_DirectDraw_CreateSurface (iface, pDDSD, ppSurf, pUnkOuter);       
        }
 
+       This->mDDrawGlobal.dsList = (LPDDRAWI_DDRAWSURFACE_INT)&This->mPrimaryLocal;
 
     // the real surface object creation