summaryrefslogtreecommitdiff
path: root/libs/ardour/audio_track.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-03-14 12:36:00 +0100
committerRobin Gareus <robin@gareus.org>2020-03-14 13:25:54 +0100
commit8f378650700930dba1865cb1bdf1895223e6dd43 (patch)
treeece9ba2718ce61a09361469256ff22e7ec1663eb /libs/ardour/audio_track.cc
parent97f3d9496bdb602305cf522f10b21124af8aef40 (diff)
Prevent freeze/bounce of sidechain processors
This also consolidates code to test if a processor can be frozen from various places.
Diffstat (limited to 'libs/ardour/audio_track.cc')
-rw-r--r--libs/ardour/audio_track.cc20
1 files changed, 11 insertions, 9 deletions
diff --git a/libs/ardour/audio_track.cc b/libs/ardour/audio_track.cc
index b90d1392b6..692549551d 100644
--- a/libs/ardour/audio_track.cc
+++ b/libs/ardour/audio_track.cc
@@ -406,21 +406,23 @@ AudioTrack::freeze_me (InterThreadInfo& itt)
for (ProcessorList::iterator r = _processors.begin(); r != _processors.end(); ++r) {
- if ((*r)->does_routing() && (*r)->active()) {
+ if (boost::dynamic_pointer_cast<PeakMeter>(*r)) {
+ continue;
+ }
+
+ if (!can_freeze_processor (*r)) {
break;
}
- if (!boost::dynamic_pointer_cast<PeakMeter>(*r)) {
- FreezeRecordProcessorInfo* frii = new FreezeRecordProcessorInfo ((*r)->get_state(), (*r));
+ FreezeRecordProcessorInfo* frii = new FreezeRecordProcessorInfo ((*r)->get_state(), (*r));
- frii->id = (*r)->id();
+ frii->id = (*r)->id();
- _freeze_record.processor_info.push_back (frii);
+ _freeze_record.processor_info.push_back (frii);
- /* now deactivate the processor, */
- if (!boost::dynamic_pointer_cast<Amp>(*r)) {
- (*r)->deactivate ();
- }
+ /* now deactivate the processor, */
+ if (!boost::dynamic_pointer_cast<Amp>(*r)) {
+ (*r)->deactivate ();
}
_session.set_dirty ();