From f1b0f30cd5d72e16084e4f4305e4bb5877311b2c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 25 Mar 2010 14:51:32 +0000 Subject: make solo button2 click function as momentary even when in listen mode; tweak auditioner so that we know if its using the monitor bus git-svn-id: svn://localhost/ardour2/branches/3.0@6795 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/auditioner.h | 2 ++ libs/ardour/auditioner.cc | 9 ++++++--- libs/ardour/session_process.cc | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) (limited to 'libs/ardour') diff --git a/libs/ardour/ardour/auditioner.h b/libs/ardour/ardour/auditioner.h index f779fa8457..e7d3347cb6 100644 --- a/libs/ardour/ardour/auditioner.h +++ b/libs/ardour/ardour/auditioner.h @@ -53,6 +53,7 @@ class Auditioner : public AudioTrack } bool auditioning() const { return g_atomic_int_get (&_auditioning); } + bool needs_monitor() const { return via_monitor; } private: boost::shared_ptr the_region; @@ -60,6 +61,7 @@ class Auditioner : public AudioTrack mutable gint _auditioning; Glib::Mutex lock; nframes_t length; + bool via_monitor; void drop_ports (); static void *_drop_ports (void *); diff --git a/libs/ardour/auditioner.cc b/libs/ardour/auditioner.cc index f955c75ea4..d7df19a704 100644 --- a/libs/ardour/auditioner.cc +++ b/libs/ardour/auditioner.cc @@ -42,6 +42,10 @@ using namespace PBD; Auditioner::Auditioner (Session& s) : AudioTrack (s, "auditioner", Route::Hidden) + , current_frame (0) + , _auditioning (0) + , length (0) + , via_monitor (false) { } @@ -58,6 +62,7 @@ Auditioner::init () if (left == "default") { if (_session.monitor_out()) { left = _session.monitor_out()->input()->audio (0)->name(); + via_monitor = true; } else { left = _session.engine().get_nth_physical_output (DataType::AUDIO, 0); } @@ -66,6 +71,7 @@ Auditioner::init () if (right == "default") { if (_session.monitor_out()) { right = _session.monitor_out()->input()->audio (1)->name(); + via_monitor = true; } else { right = _session.engine().get_nth_physical_output (DataType::AUDIO, 1); } @@ -91,9 +97,6 @@ Auditioner::init () _output->changed.connect_same_thread (*this, boost::bind (&Auditioner::output_changed, this, _1, _2)); - the_region.reset ((AudioRegion*) 0); - g_atomic_int_set (&_auditioning, 0); - return 0; } diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index 306df524a8..8f6d8123ae 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -880,7 +880,7 @@ Session::process_audition (nframes_t nframes) /* if using a monitor section, run it because otherwise we don't hear anything */ - if (_monitor_out) { + if (auditioner->needs_monitor()) { _monitor_out->passthru (_transport_frame, _transport_frame + nframes, nframes, false); } -- cgit v1.2.3