[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50377] trunk/blender/source/blender/ compositor: * there is a tiny memory leak.

Jeroen Bakker j.bakker at atmind.nl
Tue Sep 4 13:08:51 CEST 2012


Revision: 50377
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50377
Author:   jbakker
Date:     2012-09-04 11:08:47 +0000 (Tue, 04 Sep 2012)
Log Message:
-----------
 * there is a tiny memory leak. I think it happens when you quit blenden
during a WM_draw. tiny is max 8* size of pointer and it is maintained at
that size. So no worries there.
 * cleanup some code to be certain that deinitialization happens
correctly.

Modified Paths:
--------------
    trunk/blender/source/blender/compositor/COM_compositor.h
    trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp
    trunk/blender/source/blender/compositor/intern/COM_compositor.cpp

Modified: trunk/blender/source/blender/compositor/COM_compositor.h
===================================================================
--- trunk/blender/source/blender/compositor/COM_compositor.h	2012-09-04 09:06:37 UTC (rev 50376)
+++ trunk/blender/source/blender/compositor/COM_compositor.h	2012-09-04 11:08:47 UTC (rev 50377)
@@ -301,10 +301,17 @@
 
 /**
  * @brief Deinitialize the compositor caches and allocated memory.
+ * Use COM_clearCaches to only free the caches.
  */
 void COM_deinitialize(void);
 
 /**
+ * @brief Clear all compositor caches. (Compositor system will still remain available). 
+ * To deinitialize the compositor use the COM_deinitialize method.
+ */
+void COM_clearCaches(void);
+
+/**
  * @brief Return a list of highlighted bnodes pointers.
  * @return 
  */

Modified: trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp	2012-09-04 09:06:37 UTC (rev 50376)
+++ trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp	2012-09-04 11:08:47 UTC (rev 50377)
@@ -103,7 +103,13 @@
 
 void COM_startReadHighlights()
 {
-	if (g_highlightedNodesRead) {
+	if (!g_highlightInitialized)
+	{
+		return;
+	}
+	
+	if (g_highlightedNodesRead) 
+	{
 		MEM_freeN(g_highlightedNodesRead);
 	}
 	
@@ -114,6 +120,11 @@
 
 int COM_isHighlightedbNode(bNode *bnode)
 {
+	if (!g_highlightInitialized)
+	{
+		return false;
+	}
+	
 	if (!g_highlightedNodesRead) {
 		return false;
 	}
@@ -397,13 +408,18 @@
 
 	/* deinitialize highlighting */
 	if (g_highlightInitialized) {
-		if (g_highlightedNodes)
+		g_highlightInitialized = false;
+		if (g_highlightedNodes) 
+		{
 			MEM_freeN(g_highlightedNodes);
+			g_highlightedNodes = NULL;
+		}
 
-		if (g_highlightedNodesRead)
+		if (g_highlightedNodesRead) 
+		{
 			MEM_freeN(g_highlightedNodesRead);
-
-		g_highlightInitialized = false;
+			g_highlightedNodesRead = NULL;
+		}
 	}
 }
 

Modified: trunk/blender/source/blender/compositor/intern/COM_compositor.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_compositor.cpp	2012-09-04 09:06:37 UTC (rev 50376)
+++ trunk/blender/source/blender/compositor/intern/COM_compositor.cpp	2012-09-04 11:08:47 UTC (rev 50377)
@@ -37,6 +37,11 @@
 static ThreadMutex s_compositorMutex;
 static char is_compositorMutex_init = FALSE;
 
+void intern_freeCompositorCaches() 
+{
+	deintializeDistortionCache();
+}
+
 void COM_execute(RenderData *rd, bNodeTree *editingtree, int rendering)
 {
 	/* initialize mutex, TODO this mutex init is actually not thread safe and
@@ -86,14 +91,22 @@
 	BLI_mutex_unlock(&s_compositorMutex);
 }
 
+void COM_freeCaches() 
+{
+	if (is_compositorMutex_init)
+	{
+		BLI_mutex_lock(&s_compositorMutex);
+		intern_freeCompositorCaches();
+		BLI_mutex_unlock(&s_compositorMutex);
+	}
+}
+
 void COM_deinitialize() 
 {
 	if (is_compositorMutex_init) {
 		BLI_mutex_lock(&s_compositorMutex);
-
-		deintializeDistortionCache();
+		intern_freeCompositorCaches();
 		WorkScheduler::deinitialize();
-
 		is_compositorMutex_init = FALSE;
 		BLI_mutex_unlock(&s_compositorMutex);
 		BLI_mutex_end(&s_compositorMutex);




More information about the Bf-blender-cvs mailing list