struct SessionEvent {
enum Type {
SetTransportSpeed,
- SetDiskstreamSpeed,
+ SetTrackSpeed,
Locate,
LocateRoll,
LocateRollLocate,
InputConfigurationChange,
SetPlayAudioRange,
RealTimeOperation,
+ AdjustPlaybackBuffering,
+ AdjustCaptureBuffering,
+ SetTimecodeTransmission,
/* only one of each of these events can be queued at any one time */
Type type;
Action action;
- nframes64_t action_frame;
- nframes64_t target_frame;
+ framepos_t action_frame;
+ framepos_t target_frame;
double speed;
union {
void* ptr;
bool yes_or_no;
- nframes64_t target2_frame;
+ framepos_t target2_frame;
Slave* slave;
Route* route;
};
boost::shared_ptr<Region> region;
- SessionEvent (Type t, Action a, nframes_t when, nframes_t where, double spd, bool yn = false, bool yn2 = false)
+ SessionEvent (Type t, Action a, framepos_t when, framepos_t where, double spd, bool yn = false, bool yn2 = false)
: type (t)
, action (a)
, action_frame (when)
void* operator new (size_t);
void operator delete (void *ptr, size_t /*size*/);
- static const nframes_t Immediate = 0;
+ static const framepos_t Immediate = 0;
- static void create_per_thread_pool (const std::string& n, unsigned long nitems);
+ static void create_per_thread_pool (const std::string& n, uint32_t nitems);
static void init_event_pool ();
private:
static PerThreadPool* pool;
CrossThreadPool* own_pool;
+
+ friend class Butler;
};
class SessionEventManager {
- public:
- SessionEventManager () : pending_events (2048){}
- virtual ~SessionEventManager() {}
+public:
+ SessionEventManager () : pending_events (2048),
+ auto_loop_event(0), punch_out_event(0), punch_in_event(0) {}
+ virtual ~SessionEventManager() {}
- virtual void queue_event (SessionEvent *ev) = 0;
+ virtual void queue_event (SessionEvent *ev) = 0;
void clear_events (SessionEvent::Type type);
-
- protected:
- RingBuffer<SessionEvent*> pending_events;
+
+protected:
+ RingBuffer<SessionEvent*> pending_events;
typedef std::list<SessionEvent *> Events;
Events events;
Events immediate_events;
SessionEvent *auto_loop_event;
SessionEvent *punch_out_event;
- SessionEvent *punch_in_event;
-
+ SessionEvent *punch_in_event;
+
void dump_events () const;
void merge_event (SessionEvent*);
- void replace_event (SessionEvent::Type, nframes64_t action_frame, nframes64_t target = 0);
+ void replace_event (SessionEvent::Type, framepos_t action_frame, framepos_t target = 0);
bool _replace_event (SessionEvent*);
bool _remove_event (SessionEvent *);
void _clear_event_type (SessionEvent::Type);
- void add_event (nframes64_t action_frame, SessionEvent::Type type, nframes64_t target_frame = 0);
- void remove_event (nframes64_t frame, SessionEvent::Type type);
+ void add_event (framepos_t action_frame, SessionEvent::Type type, framepos_t target_frame = 0);
+ void remove_event (framepos_t frame, SessionEvent::Type type);
- virtual void process_event(SessionEvent*) = 0;
- virtual void set_next_event () = 0;
+ virtual void process_event(SessionEvent*) = 0;
+ virtual void set_next_event () = 0;
};
} /* namespace */