summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/ardour/audio_track.h1
-rw-r--r--libs/ardour/ardour/track.h1
-rw-r--r--libs/ardour/audio_track.cc15
3 files changed, 17 insertions, 0 deletions
diff --git a/libs/ardour/ardour/audio_track.h b/libs/ardour/ardour/audio_track.h
index 0bc8be81f4..ace5a041ce 100644
--- a/libs/ardour/ardour/audio_track.h
+++ b/libs/ardour/ardour/audio_track.h
@@ -52,6 +52,7 @@ class LIBARDOUR_API AudioTrack : public Track
void freeze_me (InterThreadInfo&);
void unfreeze ();
+ bool frozen_processor(PBD::ID const) const;
bool bounceable (boost::shared_ptr<Processor>, bool include_endpoint) const;
boost::shared_ptr<Region> bounce (InterThreadInfo&);
diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h
index 736ca8c6dd..7691981fa4 100644
--- a/libs/ardour/ardour/track.h
+++ b/libs/ardour/ardour/track.h
@@ -88,6 +88,7 @@ class LIBARDOUR_API Track : public Route, public PublicDiskstream
virtual void freeze_me (InterThreadInfo&) = 0;
virtual void unfreeze () = 0;
+ virtual bool frozen_processor(PBD::ID const) const { return false; }
/** @return true if the track can be bounced, or false otherwise.
*/
diff --git a/libs/ardour/audio_track.cc b/libs/ardour/audio_track.cc
index 13d5c43dda..5b9df22a7b 100644
--- a/libs/ardour/audio_track.cc
+++ b/libs/ardour/audio_track.cc
@@ -601,6 +601,21 @@ AudioTrack::freeze_me (InterThreadInfo& itt)
FreezeChange(); /* EMIT SIGNAL */
}
+bool
+AudioTrack::frozen_processor(PBD::ID const id) const
+{
+ if (freeze_state() != AudioTrack::Frozen) {
+ return false;
+ }
+
+ for (vector<FreezeRecordProcessorInfo*>::const_iterator ii = _freeze_record.processor_info.begin(); ii != _freeze_record.processor_info.end(); ++ii) {
+ if ((*ii)->id == id) {
+ return true;
+ }
+ }
+ return false;
+}
+
void
AudioTrack::unfreeze ()
{