add API to query a processor's frozen state.
authorRobin Gareus <robin@gareus.org>
Wed, 4 Jun 2014 00:23:24 +0000 (02:23 +0200)
committerRobin Gareus <robin@gareus.org>
Wed, 4 Jun 2014 00:23:24 +0000 (02:23 +0200)
libs/ardour/ardour/audio_track.h
libs/ardour/ardour/track.h
libs/ardour/audio_track.cc

index 0bc8be81f45b066ac8f8d2b57a4cb954a247f353..ace5a041ce5e511513267da692ef0ebde9294943 100644 (file)
@@ -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&);
index 736ca8c6dd8662ae9a20e94122a67bc6feb65da8..7691981fa4ed525df757d901ee3e47e178d8949c 100644 (file)
@@ -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.
         */
index 13d5c43dda312d392e93199defdbd6a6b94f858c..5b9df22a7bd70fc335939e3c6d97a2ddbd5f6d17 100644 (file)
@@ -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 ()
 {