X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fauditioner.cc;h=8b8f850f8bd6dfde0cff7c973e65dbfae1bda18c;hb=8f59346592b8232e910ce0bbdc247cf8cecde4dd;hp=f955c75ea4877c3afcef51708d58a232561ac513;hpb=02583c300f1a909c031b75e9e264696cce0a53e2;p=ardour.git diff --git a/libs/ardour/auditioner.cc b/libs/ardour/auditioner.cc index f955c75ea4..8b8f850f8b 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; } @@ -196,7 +199,7 @@ Auditioner::audition_region (boost::shared_ptr region) int Auditioner::play_audition (nframes_t nframes) { - bool need_butler; + bool need_butler = false; nframes_t this_nframes; int ret; @@ -207,14 +210,11 @@ Auditioner::play_audition (nframes_t nframes) this_nframes = min (nframes, length - current_frame); - _diskstream->prepare (); - - if ((ret = roll (this_nframes, current_frame, current_frame + nframes, false, false, false)) != 0) { + if ((ret = roll (this_nframes, current_frame, current_frame + nframes, false, false, false, need_butler)) != 0) { silence (nframes); return ret; } - need_butler = _diskstream->commit (this_nframes); current_frame += this_nframes; if (current_frame >= length) {