diff options
author | Robin Gareus <robin@gareus.org> | 2019-02-21 01:34:58 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-02-21 01:34:58 +0100 |
commit | 522f28b3c5b5e93b924ef05cf64368a5a1a033ad (patch) | |
tree | f36b96df7a547dce7dcff470795a5a8b40ed11f6 /libs/ardour | |
parent | e48fe0fd421a46cff5993f777901248cbbd23a81 (diff) |
Add API to check for ongoing de-click
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/disk_reader.h | 4 | ||||
-rw-r--r-- | libs/ardour/ardour/session.h | 1 | ||||
-rw-r--r-- | libs/ardour/disk_reader.cc | 8 | ||||
-rw-r--r-- | libs/ardour/session_transport.cc | 12 |
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 () |