#include "ardour/debug.h"
#include "ardour/session_event.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace std;
using namespace ARDOUR;
pool = new PerThreadPool;
}
+bool
+SessionEvent::has_per_thread_pool ()
+{
+ return pool->has_per_thread_pool ();
+}
+
void
SessionEvent::create_per_thread_pool (const std::string& name, uint32_t nitems)
{
SessionEvent* ev = static_cast<SessionEvent*> (p->alloc ());
DEBUG_TRACE (DEBUG::SessionEvents, string_compose ("%1 Allocating SessionEvent from %2 ev @ %3 pool size %4 free %5 used %6\n", pthread_name(), p->name(), ev,
p->total(), p->available(), p->used()));
-
+
ev->own_pool = p;
return 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;
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) {
set_next_event ();
}
-