diff options
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/auditioner.h | 2 | ||||
-rw-r--r-- | libs/ardour/auditioner.cc | 9 | ||||
-rw-r--r-- | libs/ardour/session_process.cc | 2 |
3 files changed, 9 insertions, 4 deletions
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<AudioRegion> 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); } |