Commit d0b40b1d authored by Ell's avatar Ell

transform: fix composite transform chains with multiple consumers

gegl_transform_is_composite_node() returns TRUE if the op's producer
is a (suitable) transform op.  OTOH,
gimp_transform_is_intermediate_node() returns TRUE only if *all* the
op's consumers are transform ops.  In other words, if transform op A
feeds to both transform op B and non-transform op C, A will not
consider itself an intermediate node, while B *will* consider itself
a composite node.  This results in double application of A's matrix:
first by A, and again by B.

Fix this by having gegl_transform_is_composite_node() check if the
source node is an intermediate transform node (i.e., if all its
consumers are transform ops.)
parent 4e2bc3e7
......@@ -413,7 +413,8 @@ gegl_transform_is_composite_node (OpTransform *transform)
source = gegl_node_get_gegl_operation (source_node);
return (IS_OP_TRANSFORM (source) && transform->sampler == OP_TRANSFORM (source)->sampler);
return (IS_OP_TRANSFORM (source) &&
gegl_transform_is_intermediate_node (OP_TRANSFORM (source)));
}
static void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment