[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