Fix bounce and freeze

* Include main-out channel-count when bouncing the output
* Do not de-activate disk-reader and mains-out when freezing a track
* Ignore meter when counting channels
This commit is contained in:
Robin Gareus 2020-10-24 05:44:29 +02:00
parent 54829492ca
commit 421c52ba7d
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
2 changed files with 9 additions and 1 deletions

View File

@ -265,6 +265,10 @@ AudioTrack::bounceable (boost::shared_ptr<Processor> endpoint, bool include_endp
continue;
}
if (boost::dynamic_pointer_cast<PeakMeter>(*r)) {
continue;
}
/* does the output from the last considered processor match the
* input to this one?
*/
@ -375,7 +379,7 @@ AudioTrack::freeze_me (InterThreadInfo& itt)
_freeze_record.processor_info.push_back (frii);
/* now deactivate the processor, */
if (!boost::dynamic_pointer_cast<Amp>(*r)) {
if (!boost::dynamic_pointer_cast<Amp>(*r) && *r != _disk_reader && *r != main_outs()) {
(*r)->deactivate ();
}

View File

@ -651,6 +651,8 @@ Route::bounce_get_output_streams (ChanCount &cc, boost::shared_ptr<Processor> en
return cc;
}
Glib::Threads::RWLock::ReaderLock lm (_processor_lock);
for (ProcessorList::const_iterator i = _processors.begin(); i != _processors.end(); ++i) {
if (!include_endpoint && (*i) == endpoint) {
break;
@ -660,6 +662,8 @@ Route::bounce_get_output_streams (ChanCount &cc, boost::shared_ptr<Processor> en
}
if (!(*i)->does_routing() && !boost::dynamic_pointer_cast<PeakMeter>(*i)) {
cc = (*i)->output_streams();
} else if (*i == _main_outs) {
cc = (*i)->output_streams();
}
if ((*i) == endpoint) {
break;