13
0

triggerbox: reset all trigger states when locating/stopping

We also exclude anything from happening during TriggerBox::run() while locating/stopping
is taking place.
This commit is contained in:
Paul Davis 2022-03-17 12:20:20 -06:00
parent 2b630c4887
commit e72cff4ab1

View File

@ -3600,6 +3600,13 @@ TriggerBox::run (BufferSet& bufs, samplepos_t start_sample, samplepos_t end_samp
return;
}
if (_session.transport_locating()) {
/* nothing to do here at all. We do not run triggers while
locate is still taking place.
*/
return;
}
#ifndef NDEBUG
{
Temporal::TempoMap::SharedPtr __tmap (Temporal::TempoMap::use());
@ -4307,12 +4314,24 @@ TriggerBox::realtime_handle_transport_stopped ()
void
TriggerBox::non_realtime_transport_stop (samplepos_t now, bool /*flush*/)
{
DEBUG_TRACE (DEBUG::Triggers, string_compose ("%1 (%3): non-realtime stop at %2\n", order(), now, this));
for (auto & t : all_triggers) {
t->shutdown_from_fwd ();
}
fast_forward (_session.cue_events(), now);
}
void
TriggerBox::non_realtime_locate (samplepos_t now)
{
DEBUG_TRACE (DEBUG::Triggers, string_compose ("%1 (%3): non-realtime locate at %2\n", order(), now, this));
for (auto & t : all_triggers) {
t->shutdown_from_fwd ();
}
fast_forward (_session.cue_events(), now);
}