do not queue multiple Locate or LocateRoll events
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 17 Jul 2017 18:04:45 +0000 (14:04 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 18 Sep 2017 15:40:53 +0000 (11:40 -0400)
libs/ardour/session_events.cc

index 6e17545fc34e604e7afcf994b2be4c20302ac837..a14405a9e56feeefd0129cd8570c1a49218b7e05 100644 (file)
@@ -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 ();
 }
-