From 522f28b3c5b5e93b924ef05cf64368a5a1a033ad Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 21 Feb 2019 01:34:58 +0100 Subject: Add API to check for ongoing de-click --- libs/ardour/ardour/disk_reader.h | 4 +--- libs/ardour/ardour/session.h | 1 + libs/ardour/disk_reader.cc | 8 ++++++++ libs/ardour/session_transport.cc | 12 ++++++++++++ 4 files changed, 22 insertions(+), 3 deletions(-) (limited to 'libs/ardour') 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 @@ -463,6 +463,14 @@ DiskReader::run (BufferSet& bufs, samplepos_t start_sample, samplepos_t end_samp // DEBUG_TRACE (DEBUG::Butler, string_compose ("%1 reader run, needs butler = %2\n", name(), _need_butler)); } +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 rl = routes.reader(); + for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) { + boost::shared_ptr tr = boost::dynamic_pointer_cast (*i); + if (tr && tr->declick_in_progress ()) { + return true; + } + } + return false; +} void Session::non_realtime_locate () -- cgit v1.2.3