summaryrefslogtreecommitdiff
path: root/libs/ardour/session_events.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-07-17 14:04:45 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2017-09-18 11:40:53 -0400
commit144f95c3056bb62d3f2445b7746eebce7c0e1ad5 (patch)
treeba251adfddf95ee8aa1ecb0b34bd3366cf7d7117 /libs/ardour/session_events.cc
parent3d183dc462a82c5ee0b4fb77a226f0e49d9736f7 (diff)
do not queue multiple Locate or LocateRoll events
Diffstat (limited to 'libs/ardour/session_events.cc')
-rw-r--r--libs/ardour/session_events.cc7
1 files 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 ();
}
-