virtual bool can_record() { return false; }
- virtual void non_realtime_transport_stop (samplepos_t now, bool flush);
- virtual void realtime_handle_transport_stopped () {}
+ void non_realtime_transport_stop (samplepos_t now, bool flush);
+ void realtime_handle_transport_stopped ();
+
virtual void realtime_locate () {}
virtual void non_realtime_locate (samplepos_t);
void set_loop (ARDOUR::Location *);
int can_internal_playback_seek (samplecnt_t);
int internal_playback_seek (samplecnt_t);
void non_realtime_locate (samplepos_t);
- void realtime_handle_transport_stopped ();
void non_realtime_speed_change ();
int overwrite_existing_buffers ();
samplecnt_t get_captured_samples (uint32_t n = 0) const;
}
}
+void
+Route::realtime_handle_transport_stopped ()
+{
+ Glib::Threads::RWLock::ReaderLock lm (_processor_lock);
+
+ /* currently only by Plugin, queue note-off events */
+ for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
+ (*i)->realtime_handle_transport_stopped ();
+ }
+}
+
+
void
Route::input_change_handler (IOChange change, void * /*src*/)
{
return _disk_writer->transport_looped (p);
}
-void
-Track::realtime_handle_transport_stopped ()
-{
- Glib::Threads::RWLock::ReaderLock lm (_processor_lock, Glib::Threads::TRY_LOCK);
-
- if (!lm.locked ()) {
- return;
- }
-
- for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
- (*i)->realtime_handle_transport_stopped ();
- }
-}
-
void
Track::transport_stopped_wallclock (struct tm & n, time_t t, bool g)
{