summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-03-25 14:51:32 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-03-25 14:51:32 +0000
commitf1b0f30cd5d72e16084e4f4305e4bb5877311b2c (patch)
treeeae732c4c05a57c9506217107678ebebf287b438 /libs/ardour
parent02583c300f1a909c031b75e9e264696cce0a53e2 (diff)
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
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/auditioner.h2
-rw-r--r--libs/ardour/auditioner.cc9
-rw-r--r--libs/ardour/session_process.cc2
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);
}