[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46874] trunk/blender/source/blender/ compositor: Fix imbuf users leak in MovieClip tiles node

Sergey Sharybin sergey.vfx at gmail.com
Tue May 22 11:15:06 CEST 2012


Revision: 46874
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46874
Author:   nazgul
Date:     2012-05-22 09:15:05 +0000 (Tue, 22 May 2012)
Log Message:
-----------
Fix imbuf users leak in MovieClip tiles node

Leak was caused by not calling IMB_freeImBuf for result of BKE_movieclip_get_ibuf

Modified Paths:
--------------
    trunk/blender/source/blender/compositor/nodes/COM_MovieClipNode.cpp
    trunk/blender/source/blender/compositor/operations/COM_MovieClipOperation.cpp

Modified: trunk/blender/source/blender/compositor/nodes/COM_MovieClipNode.cpp
===================================================================
--- trunk/blender/source/blender/compositor/nodes/COM_MovieClipNode.cpp	2012-05-22 09:15:01 UTC (rev 46873)
+++ trunk/blender/source/blender/compositor/nodes/COM_MovieClipNode.cpp	2012-05-22 09:15:05 UTC (rev 46874)
@@ -30,6 +30,7 @@
 	#include "DNA_movieclip_types.h"
 	#include "BKE_movieclip.h"
 	#include "BKE_tracking.h"
+	#include "IMB_imbuf.h"
 }
 
 MovieClipNode::MovieClipNode(bNode *editorNode): Node(editorNode)
@@ -118,4 +119,8 @@
 		angleMovieClip->relinkConnections(operationSetValue->getOutputSocket());
 		graph->addOperation(operationSetValue);
 	}
+
+	if (ibuf) {
+		IMB_freeImBuf(ibuf);
+	}
 }

Modified: trunk/blender/source/blender/compositor/operations/COM_MovieClipOperation.cpp
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_MovieClipOperation.cpp	2012-05-22 09:15:01 UTC (rev 46873)
+++ trunk/blender/source/blender/compositor/operations/COM_MovieClipOperation.cpp	2012-05-22 09:15:05 UTC (rev 46874)
@@ -61,21 +61,27 @@
 
 void MovieClipOperation::deinitExecution()
 {
-	this->movieClipBuffer = NULL;
+	if (this->movieClipBuffer) {
+		IMB_freeImBuf(this->movieClipBuffer);
+
+		this->movieClipBuffer = NULL;
+	}
 }
 
 void MovieClipOperation::determineResolution(unsigned int resolution[], unsigned int preferredResolution[])
 {
 	ImBuf *ibuf;
 
-        resolution[0] = 0;
-        resolution[1] = 0;
+	resolution[0] = 0;
+	resolution[1] = 0;
 
 	if (this->movieClip) {
 		ibuf = BKE_movieclip_get_ibuf(this->movieClip, this->movieClipUser);
 		if (ibuf) {
 			resolution[0] = ibuf->x;
 			resolution[1] = ibuf->y;
+
+			IMB_freeImBuf(ibuf);
 		}
 	}
 }




More information about the Bf-blender-cvs mailing list