X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fsession_event.h;h=fe109a21f82a6a2b0ae737c2d02e18b8374489bc;hb=940707e327014f30791d75be00ccbd33b0a0555d;hp=3f7fc6c092219861f4ccfd4da7b3055f1e158485;hpb=76d42ab644eac81ddecb7cbf8da98f2bc550a9a3;p=ardour.git diff --git a/libs/ardour/ardour/session_event.h b/libs/ardour/ardour/session_event.h index 3f7fc6c092..fe109a21f8 100644 --- a/libs/ardour/ardour/session_event.h +++ b/libs/ardour/ardour/session_event.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2012 Paul Davis + Copyright (C) 2012 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -47,6 +47,7 @@ public: SetLoop, PunchIn, PunchOut, + RecordStart, RangeStop, RangeLocate, Overwrite, @@ -84,26 +85,28 @@ public: union { void* ptr; bool yes_or_no; - framepos_t target2_frame; + framepos_t target2_frame; Slave* slave; Route* route; }; union { bool second_yes_or_no; + double control_value; }; union { bool third_yes_or_no; }; - /* 4 members to handle a multi-group event handled in RT context */ + /* 5 members to handle a multi-group event handled in RT context */ typedef boost::function RTeventCallback; - boost::shared_ptr routes; /* apply to */ - boost::function rt_slot; /* what to call in RT context */ - RTeventCallback rt_return; /* called after rt_slot, with this event as an argument */ + boost::shared_ptr controls; /* apply to */ + boost::shared_ptr routes; /* apply to */ + boost::function rt_slot; /* what to call in RT context */ + RTeventCallback rt_return; /* called after rt_slot, with this event as an argument */ PBD::EventLoop* event_loop; std::list audio_range; @@ -111,16 +114,7 @@ public: boost::shared_ptr region; - SessionEvent (Type t, Action a, framepos_t when, framepos_t where, double spd, bool yn = false, bool yn2 = false, bool yn3 = false) - : type (t) - , action (a) - , action_frame (when) - , target_frame (where) - , speed (spd) - , yes_or_no (yn) - , second_yes_or_no (yn2) - , third_yes_or_no (yn3) - , event_loop (0) {} + SessionEvent (Type t, Action a, framepos_t when, framepos_t where, double spd, bool yn = false, bool yn2 = false, bool yn3 = false); void set_ptr (void* p) { ptr = p; @@ -143,9 +137,12 @@ public: static const framepos_t Immediate = -1; + static bool has_per_thread_pool (); static void create_per_thread_pool (const std::string& n, uint32_t nitems); static void init_event_pool (); + CrossThreadPool* event_pool() const { return own_pool; } + private: static PerThreadPool* pool; CrossThreadPool* own_pool; @@ -161,6 +158,7 @@ public: virtual void queue_event (SessionEvent *ev) = 0; void clear_events (SessionEvent::Type type); + void clear_events (SessionEvent::Type type, boost::function after); protected: RingBuffer pending_events;