[PATCH 1/2] Handle refcount of lights when interacting with viewport.

Christian Costa titan.costa at wanadoo.fr
Sun Apr 19 15:24:19 CDT 2009


---

 0 files changed, 0 insertions(+), 0 deletions(-)
-------------- next part --------------
diff --git a/dlls/ddraw/viewport.c b/dlls/ddraw/viewport.c
index 30d5e18..967094f 100644
--- a/dlls/ddraw/viewport.c
+++ b/dlls/ddraw/viewport.c
@@ -760,6 +760,8 @@ IDirect3DViewportImpl_AddLight(IDirect3DViewport3 *iface,
         lpDirect3DLightImpl->activate(lpDirect3DLightImpl);
     }
 
+    IDirect3DLight_AddRef(lpDirect3DLight);
+
     LeaveCriticalSection(&ddraw_cs);
     return D3D_OK;
 }
@@ -798,6 +800,7 @@ IDirect3DViewportImpl_DeleteLight(IDirect3DViewport3 *iface,
 	    cur_light->active_viewport = NULL;
 	    This->num_lights--;
 	    This->map_lights &= ~(1<<lpDirect3DLightImpl->dwLightIndex);
+            IDirect3DLight_Release(lpDirect3DLight);
             LeaveCriticalSection(&ddraw_cs);
             return D3D_OK;
 	}
@@ -871,6 +874,9 @@ IDirect3DViewportImpl_NextLight(IDirect3DViewport3 *iface,
             break;
     }
 
+    if (*lplpDirect3DLight)
+        IDirect3DLight_AddRef(*lplpDirect3DLight);
+
     LeaveCriticalSection(&ddraw_cs);
 
     return *lplpDirect3DLight ? D3D_OK : DDERR_INVALIDPARAMS;


More information about the wine-patches mailing list