diff options
author | Manuel Castilla <manzanilla> | 2021-04-14 09:18:27 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2021-04-14 09:18:44 +0300 |
commit | a425b2b25c0f7ba44e9732633e648338270c4483 (patch) | |
tree | a5bc6bf1d8c200d012db4232aa3f52786b0185a5 | |
parent | 6776b74d0a6720d233efa459fa238aa57eb84a76 (diff) |
Fix (unreported) compositor resolution propagation broken by some nodes
Some operations may use no preferredResolution ({0, 0}) when calling determineResolution on inputs to check if they have resolution on their own. See MixOperation or MathOperation determineResolution implementation. In such cases {0, 0} resolution ends up being set when an input doesn't have own resolution, breaking propagation of the original preferredResolution. They don't mean to set it as resolution, it's just a check.
This patch only allows to set valid resolutions (>0). When it's 0 it may be understood as "No preferred or determined resolution" so it should not be set to give output operations another chance of finding a proper resolution by calling determineResolution again with a different preferredResolution.
Test file:
{F9932526}
Reviewed By: #compositing, jbakker
Differential Revision: https://developer.blender.org/D10972
m--------- | release/datafiles/locale | 0 | ||||
m--------- | release/scripts/addons | 0 | ||||
m--------- | release/scripts/addons_contrib | 0 | ||||
-rw-r--r-- | source/blender/compositor/intern/COM_NodeOperation.cc | 4 | ||||
m--------- | source/tools | 0 |
5 files changed, 3 insertions, 1 deletions
diff --git a/release/datafiles/locale b/release/datafiles/locale -Subproject 2cef4877edc40875978c4e95322bb5193f5815b +Subproject f7b706dd6434db2d752f47c4b8c3148b2990fd7 diff --git a/release/scripts/addons b/release/scripts/addons -Subproject bcd08a9506d33bdd7358201031b04d041ef22d9 +Subproject 1dbdb95ed93a8b96d12e42e17249f6e2cdd2461 diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib -Subproject f948f658ba33eb670a65e0bba058d43138abea7 +Subproject 5523cbaed60719960f5f7b2486925145ecbe81e diff --git a/source/blender/compositor/intern/COM_NodeOperation.cc b/source/blender/compositor/intern/COM_NodeOperation.cc index 0bb8e0ef674..be3ea59efa5 100644 --- a/source/blender/compositor/intern/COM_NodeOperation.cc +++ b/source/blender/compositor/intern/COM_NodeOperation.cc @@ -220,7 +220,9 @@ void NodeOperationOutput::determineResolution(unsigned int resolution[2], } else { operation.determineResolution(resolution, preferredResolution); - operation.setResolution(resolution); + if (resolution[0] > 0 && resolution[1] > 0) { + operation.setResolution(resolution); + } } } diff --git a/source/tools b/source/tools -Subproject b66c22e1fb977bf8dd3797ebedc28fbe28f0305 +Subproject f1db70de64574921180b2c99519027d44d5350f |