From 144f95c3056bb62d3f2445b7746eebce7c0e1ad5 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 17 Jul 2017 14:04:45 -0400 Subject: [PATCH] do not queue multiple Locate or LocateRoll events --- libs/ardour/session_events.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libs/ardour/session_events.cc b/libs/ardour/session_events.cc index 6e17545fc3..a14405a9e5 100644 --- a/libs/ardour/session_events.cc +++ b/libs/ardour/session_events.cc @@ -211,6 +211,11 @@ SessionEventManager::merge_event (SessionEvent* ev) /* try to handle immediate events right here */ + if (ev->type == SessionEvent::Locate || ev->type == SessionEvent::LocateRoll) { + /* remove any existing Locates that are waiting to execute */ + _clear_event_type (ev->type); + } + if (ev->action_frame == SessionEvent::Immediate) { process_event (ev); return; @@ -222,7 +227,6 @@ SessionEventManager::merge_event (SessionEvent* ev) case SessionEvent::StopOnce: _clear_event_type (ev->type); break; - default: for (Events::iterator i = events.begin(); i != events.end(); ++i) { if ((*i)->type == ev->type && (*i)->action_frame == ev->action_frame) { @@ -336,4 +340,3 @@ SessionEventManager::_clear_event_type (SessionEvent::Type type) set_next_event (); } -