Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-06-04 17:19:17 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-06-04 17:19:17 +0400
commitf53a52ba1cc682f36551c9b96e8cd00bfb6372bc (patch)
treed5af4c45a3ca9005a9d6c3e0f5d1aea34dbb1467
parentd27ea22953ff002952e576d13505998ec01a1254 (diff)
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.
-rw-r--r--source/blender/compositor/nodes/COM_ViewerNode.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/source/blender/compositor/nodes/COM_ViewerNode.cpp b/source/blender/compositor/nodes/COM_ViewerNode.cpp
index 3282929af52..db4fd115d73 100644
--- a/source/blender/compositor/nodes/COM_ViewerNode.cpp
+++ b/source/blender/compositor/nodes/COM_ViewerNode.cpp
@@ -36,8 +36,8 @@ void ViewerNode::convertToOperations(ExecutionSystem *graph, CompositorContext *
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);