- // Go through each input that is not linear gamma, and insert
- // a gamma conversion before it.
+ // Special case: We could be an input and still be asked to
+ // fix our gamma; if so, we should be the only node
+ // (as node_needs_gamma_fix() would only return true in
+ // for an input in that case). That means we should insert
+ // a conversion node _after_ ourselves.
+ if (node->incoming_links.empty()) {
+ assert(node->outgoing_links.empty());
+ Node *conversion = add_node(new GammaExpansionEffect());
+ conversion->effect->set_int("source_curve", node->output_gamma_curve);
+ conversion->output_gamma_curve = GAMMA_LINEAR;
+ connect_nodes(node, conversion);
+ }
+
+ // If not, go through each input that is not linear gamma,
+ // and insert a gamma conversion before it.