[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47406] trunk/blender/source/blender/ compositor/nodes/COM_ViewerNode.cpp: Fix #31697: Blender crashes when using several viewer nodes in tile

Sergey Sharybin sergey.vfx at gmail.com
Mon Jun 4 15:19:30 CEST 2012


Revision: 47406
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47406
Author:   nazgul
Date:     2012-06-04 13:19:17 +0000 (Mon, 04 Jun 2012)
Log Message:
-----------
Fix #31697: Blender crashes when using several viewer nodes in tile

Issue was caused by fact that viewer node might re-size ImBuf used for
viewer node result, so if several viewer nodes are running for inputs
with different resolutions it'll result in a crash,

Now copied behavior or pre-tile compositor -- execute viewer node which
has NODE_DO_OUTPUT flag, so no several nodes would be calculated at once.

Should be pretty ok because calculation of several viewers doesn't actually
make sense because there's only one buffer they might use and it's getting
re-calculated when changing active viewer node.

Modified Paths:
--------------
    trunk/blender/source/blender/compositor/nodes/COM_ViewerNode.cpp

Modified: trunk/blender/source/blender/compositor/nodes/COM_ViewerNode.cpp
===================================================================
--- trunk/blender/source/blender/compositor/nodes/COM_ViewerNode.cpp	2012-06-04 13:07:41 UTC (rev 47405)
+++ trunk/blender/source/blender/compositor/nodes/COM_ViewerNode.cpp	2012-06-04 13:19:17 UTC (rev 47406)
@@ -36,8 +36,8 @@
 	InputSocket *alphaSocket = this->getInputSocket(1);
 	Image *image = (Image*)this->getbNode()->id;
 	ImageUser * imageUser = (ImageUser*) this->getbNode()->storage;
-	if (imageSocket->isConnected()) {
-		bNode *editorNode = this->getbNode();
+	bNode *editorNode = this->getbNode();
+	if (imageSocket->isConnected() && (editorNode->flag & NODE_DO_OUTPUT)) {
 		ViewerOperation *viewerOperation = new ViewerOperation();
 		viewerOperation->setColorManagement(context->getScene()->r.color_mgt_flag & R_COLOR_MANAGEMENT);
 		viewerOperation->setColorPredivide(context->getScene()->r.color_mgt_flag & R_COLOR_MANAGEMENT_PREDIVIDE);




More information about the Bf-blender-cvs mailing list