diff options
Diffstat (limited to 'libs/ardour/panner.cc')
-rw-r--r-- | libs/ardour/panner.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libs/ardour/panner.cc b/libs/ardour/panner.cc index fe0a792b6b..04c744b880 100644 --- a/libs/ardour/panner.cc +++ b/libs/ardour/panner.cc @@ -749,10 +749,14 @@ Panner::reset (uint32_t nouts, uint32_t npans) { uint32_t n; bool changed = false; + bool do_not_and_did_not_need_panning = ((nouts < 2) && (outputs.size() < 2)); - //configure_io( ChanCount( DataType::AUDIO, nout ), ChanCount( DataType::AUDIO, nin ) ) - - if (nouts < 2 || (nouts == outputs.size() && npans == _streampanners.size())) { + /* if new and old config don't need panning, or if + the config hasn't changed, we're done. + */ + + if (do_not_and_did_not_need_panning || + ((nouts == outputs.size()) && (npans == _streampanners.size()))) { return; } @@ -770,6 +774,10 @@ Panner::reset (uint32_t nouts, uint32_t npans) changed = true; } + if (nouts < 2) { + goto send_changed; + } + switch (nouts) { case 0: break; @@ -871,6 +879,7 @@ Panner::reset (uint32_t nouts, uint32_t npans) } } + send_changed: if (changed) { Changed (); /* EMIT SIGNAL */ } |