diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-10-28 16:16:17 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-10-28 16:16:17 +0400 |
commit | e667f12783c1ab04a1c1ffc224b03234015ceeb7 (patch) | |
tree | 5c0aa92573312650babf6173c5d8342a75010246 /source/blender/compositor/nodes | |
parent | 32644615988277ce60e0447f08d40ef67971bd88 (diff) |
Fix #37221: Multilayer EXR inputs generate pink frame/last displayed frame when using an image sequence offset
generally speaking, if multilayer image fails to load for current
frame doesn't mean anything bad. It might be used to make it so
image sequence is being alpha-overed somewhere in the middle of
scene time.
Made it so if the whole file fails to load, image node will
deliver black transparent color, the same what happens for
regular (non-multilayer images).
Also needed to tweak code in load_multilayer_sequwnce to make
sure no cached frames are pointing to a freed memory.
Diffstat (limited to 'source/blender/compositor/nodes')
-rw-r--r-- | source/blender/compositor/nodes/COM_ImageNode.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/source/blender/compositor/nodes/COM_ImageNode.cpp b/source/blender/compositor/nodes/COM_ImageNode.cpp index 6e4bff460d1..d595afe6a78 100644 --- a/source/blender/compositor/nodes/COM_ImageNode.cpp +++ b/source/blender/compositor/nodes/COM_ImageNode.cpp @@ -142,7 +142,17 @@ void ImageNode::convertToOperations(ExecutionSystem *graph, CompositorContext *c /* without this, multilayer that fail to load will crash blender [#32490] */ if (is_multilayer_ok == false) { - convertToOperations_invalid(graph, context); + int index; + vector<OutputSocket *> &outputsockets = this->getOutputSockets(); + for (index = 0; index < outputsockets.size(); index++) { + const float warning_color[4] = {0.0f, 0.0f, 0.0f, 0.0f}; + SetColorOperation *operation = new SetColorOperation(); + operation->setChannels(warning_color); + + /* link the operation */ + this->getOutputSocket(index)->relinkConnections(operation->getOutputSocket()); + graph->addOperation(operation); + } } } else { |