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);
                }
        }
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to