boost::shared_ptr<Diskstream>
AudioTrack::create_diskstream ()
{
- AudioDiskstream::Flag dflags = AudioDiskstream::Flag (0);
-
- if (_flags & Auditioner) {
- dflags = AudioDiskstream::Flag (dflags | AudioDiskstream::Hidden);
- } else {
- dflags = AudioDiskstream::Flag (dflags | AudioDiskstream::Recordable);
- }
+ AudioDiskstream::Flag dflags = AudioDiskstream::Flag (AudioDiskstream::Recordable);
if (_mode == Destructive) {
dflags = AudioDiskstream::Flag (dflags | AudioDiskstream::Destructive);
}
_diskstream->set_record_enabled (false);
- _diskstream->request_jack_monitors_input (false);
+ _diskstream->request_input_monitoring (false);
DiskstreamChanged (); /* EMIT SIGNAL */
}
Glib::Threads::RWLock::ReaderLock lm (_processor_lock, Glib::Threads::TRY_LOCK);
if (!lm.locked()) {
+ boost::shared_ptr<AudioDiskstream> diskstream = audio_diskstream();
+ framecnt_t playback_distance = diskstream->calculate_playback_distance(nframes);
+ if (can_internal_playback_seek(llabs(playback_distance))) {
+ /* TODO should declick */
+ internal_playback_seek(playback_distance);
+ }
return 0;
}
process_output_buffers (bufs, start_frame, end_frame, nframes, declick, (!diskstream->record_enabled() && _session.transport_rolling()));
+ for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
+ boost::shared_ptr<Delivery> d = boost::dynamic_pointer_cast<Delivery> (*i);
+ if (d) {
+ d->flush_buffers (nframes);
+ }
+ }
+
need_butler = diskstream->commit (playback_distance);
return 0;