-int
-Track::silent_roll (pframes_t nframes, framepos_t /*start_frame*/, framepos_t /*end_frame*/, bool& need_butler)
-{
- Glib::Threads::RWLock::ReaderLock lm (_processor_lock, Glib::Threads::TRY_LOCK);
- if (!lm.locked()) {
- framecnt_t playback_distance = _diskstream->calculate_playback_distance(nframes);
- if (can_internal_playback_seek(playback_distance)) {
- internal_playback_seek(playback_distance);
- }
- return 0;
- }
-
- if (n_outputs().n_total() == 0 && _processors.empty()) {
- return 0;
- }
-
- if (!_active) {
- silence (nframes);
- return 0;
- }
-
- _silent = true;
- _amp->apply_gain_automation(false);
-
- silence (nframes);
-
- framecnt_t playback_distance;
-
- BufferSet& bufs (_session.get_route_buffers (n_process_buffers(), true));
-
- int const dret = _diskstream->process (bufs, _session.transport_frame(), nframes, playback_distance, false);
- need_butler = _diskstream->commit (playback_distance);
- return dret;
-}
-
-void
-Track::set_diskstream (boost::shared_ptr<Diskstream> ds)
-{
- _diskstream = ds;
-
- ds->PlaylistChanged.connect_same_thread (*this, boost::bind (&Track::diskstream_playlist_changed, this));
- diskstream_playlist_changed ();
- ds->SpeedChanged.connect_same_thread (*this, boost::bind (&Track::diskstream_speed_changed, this));
- ds->AlignmentStyleChanged.connect_same_thread (*this, boost::bind (&Track::diskstream_alignment_style_changed, this));
-}
-
-void
-Track::diskstream_playlist_changed ()
-{
- PlaylistChanged (); /* EMIT SIGNAL */
-}
-
-void
-Track::diskstream_speed_changed ()
-{
- SpeedChanged (); /* EMIT SIGNAL */
-}
-
-void
-Track::diskstream_alignment_style_changed ()
-{
- AlignmentStyleChanged (); /* EMIT SIGNAL */
-}
-