summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-02-21 01:34:58 +0100
committerRobin Gareus <robin@gareus.org>2019-02-21 01:34:58 +0100
commit522f28b3c5b5e93b924ef05cf64368a5a1a033ad (patch)
treef36b96df7a547dce7dcff470795a5a8b40ed11f6 /libs/ardour
parente48fe0fd421a46cff5993f777901248cbbd23a81 (diff)
Add API to check for ongoing de-click
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/disk_reader.h4
-rw-r--r--libs/ardour/ardour/session.h1
-rw-r--r--libs/ardour/disk_reader.cc8
-rw-r--r--libs/ardour/session_transport.cc12
4 files changed, 22 insertions, 3 deletions
diff --git a/libs/ardour/ardour/disk_reader.h b/libs/ardour/ardour/disk_reader.h
index f397f19389..30a170b386 100644
--- a/libs/ardour/ardour/disk_reader.h
+++ b/libs/ardour/ardour/disk_reader.h
@@ -93,9 +93,7 @@ public:
void playlist_modified ();
void reset_tracker ();
- bool declick_in_progress () const {
- return _declick_amp.gain() != 0; // declick-out
- }
+ bool declick_in_progress () const;
static void set_midi_readahead_samples (samplecnt_t samples_ahead) { midi_readahead = samples_ahead; }
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index e41c455cb4..d9749f22fe 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -1647,6 +1647,7 @@ private:
int start_midi_thread ();
bool should_ignore_transport_request (TransportRequestSource, TransportRequestType) const;
+ bool declick_in_progress () const;
void set_play_loop (bool yn, double speed);
void unset_play_loop ();
diff --git a/libs/ardour/disk_reader.cc b/libs/ardour/disk_reader.cc
index 9c96dbc401..d6be873d83 100644
--- a/libs/ardour/disk_reader.cc
+++ b/libs/ardour/disk_reader.cc
@@ -464,6 +464,14 @@ DiskReader::run (BufferSet& bufs, samplepos_t start_sample, samplepos_t end_samp
}
bool
+DiskReader::declick_in_progress () const {
+ /* TODO use an atomic-get.
+ * this may be called from the butler thread
+ */
+ return _declick_amp.gain() != 0; // declick-out
+}
+
+bool
DiskReader::pending_overwrite () const {
return g_atomic_int_get (&_pending_overwrite) != 0;
}
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc
index 17a0f4de8d..ff8aaa101e 100644
--- a/libs/ardour/session_transport.cc
+++ b/libs/ardour/session_transport.cc
@@ -578,6 +578,18 @@ Session::non_realtime_overwrite (int on_entry, bool& finished)
}
}
+bool
+Session::declick_in_progress () const
+{
+ boost::shared_ptr<RouteList> rl = routes.reader();
+ for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) {
+ boost::shared_ptr<Track> tr = boost::dynamic_pointer_cast<Track> (*i);
+ if (tr && tr->declick_in_progress ()) {
+ return true;
+ }
+ }
+ return false;
+}
void
Session::non_realtime_locate ()