diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-06-04 17:19:17 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-06-04 17:19:17 +0400 |
commit | f53a52ba1cc682f36551c9b96e8cd00bfb6372bc (patch) | |
tree | d5af4c45a3ca9005a9d6c3e0f5d1aea34dbb1467 /source | |
parent | d27ea22953ff002952e576d13505998ec01a1254 (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.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/compositor/nodes/COM_ViewerNode.cpp | 4 |
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); |