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>2013-10-28 16:16:17 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2013-10-28 16:16:17 +0400
commite667f12783c1ab04a1c1ffc224b03234015ceeb7 (patch)
tree5c0aa92573312650babf6173c5d8342a75010246 /source/blender/compositor/nodes/COM_ImageNode.cpp
parent32644615988277ce60e0447f08d40ef67971bd88 (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/COM_ImageNode.cpp')
-rw-r--r--source/blender/compositor/nodes/COM_ImageNode.cpp12
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 {