X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fardour%2Fsession_events.cc;h=a14405a9e56feeefd0129cd8570c1a49218b7e05;hb=fb430a7738d4d6d38de8ac3fba491c3572bed386;hp=9d11cb0b9194859c9bebbb3fffc954f120339cb6;hpb=22b07e0233a29d9633ffa825a79503befaf2e16e;p=ardour.git diff --git a/libs/ardour/session_events.cc b/libs/ardour/session_events.cc index 9d11cb0b91..a14405a9e5 100644 --- a/libs/ardour/session_events.cc +++ b/libs/ardour/session_events.cc @@ -28,7 +28,7 @@ #include "ardour/debug.h" #include "ardour/session_event.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace std; using namespace ARDOUR; @@ -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 (); } -