move rt-stop to route
currently this is only used to resolve midi events for plugins (this is conceptually not correct, note offs should be resolved by the disk-reader only), but it calls into all processors now (incl disk-reader if present), which is handy (e.g. flush delaylins)
This commit is contained in:
parent
2953b575f2
commit
cdec333bfe
|
@ -150,8 +150,9 @@ public:
|
|||
|
||||
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 *);
|
||||
|
|
|
@ -139,7 +139,6 @@ public:
|
|||
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;
|
||||
|
|
|
@ -3412,6 +3412,18 @@ Route::non_realtime_transport_stop (samplepos_t now, bool flush)
|
|||
}
|
||||
}
|
||||
|
||||
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*/)
|
||||
{
|
||||
|
|
|
@ -542,20 +542,6 @@ Track::transport_looped (samplepos_t p)
|
|||
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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user