void audition_region (boost::shared_ptr<Region>);
ARDOUR::AudioPlaylist& prepare_playlist ();
- void audition_current_playlist ();
int play_audition (framecnt_t nframes);
return *apl;
}
-void
-Auditioner::audition_current_playlist ()
-{
- if (g_atomic_int_get (&_auditioning)) {
- /* don't go via session for this, because we are going
- to remain active.
- */
- cancel_audition ();
- }
-
- Glib::Mutex::Lock lm (lock);
- _diskstream->seek (0);
- length = _diskstream->playlist()->get_extent().second;
- current_frame = 0;
-
- /* force a panner reset now that we have all channels */
-
- _main_outs->panner_shell()->configure_io (ChanCount (DataType::AUDIO, _diskstream->n_channels().n_audio()),
- ChanCount (DataType::AUDIO, n_outputs().n_audio()));
-
- g_atomic_int_set (&_auditioning, 1);
-}
-
void
Auditioner::audition_region (boost::shared_ptr<Region> region)
{
void
Session::non_realtime_set_audition ()
{
- if (!pending_audition_region) {
- auditioner->audition_current_playlist ();
- } else {
- auditioner->audition_region (pending_audition_region);
- pending_audition_region.reset ();
- }
+ assert (pending_audition_region);
+ auditioner->audition_region (pending_audition_region);
+ pending_audition_region.reset ();
AuditionActive (true); /* EMIT SIGNAL */
}