23 #ifndef EVENTSCHEDULER_H
24 #define EVENTSCHEDULER_H
31 namespace libsidplayfp
68 event_clock_t currentTime;
76 void schedule(
Event &event)
79 Event **scan = &firstEvent;
82 if ((*scan ==
nullptr) || ((*scan)->triggerTime > event.triggerTime))
88 scan = &((*scan)->next);
109 event.triggerTime = currentTime + ((currentTime & 1) ^
phase) + (cycles << 1);
121 event.triggerTime = currentTime + (cycles << 1);
142 Event &
event = *firstEvent;
143 firstEvent = firstEvent->next;
144 currentTime =
event.triggerTime;
164 return (currentTime + (
phase ^ 1)) >> 1;
172 event_phase_t
phase()
const {
return static_cast<event_phase_t
>(currentTime & 1); }
174 event_clock_t remaining(
Event &event)
const {
return event.triggerTime - currentTime; }
Definition: EventScheduler.h:62
void schedule(Event &event, unsigned int cycles, event_phase_t phase)
Definition: EventScheduler.h:106
void schedule(Event &event, unsigned int cycles)
Definition: EventScheduler.h:119
event_clock_t getTime(event_phase_t phase) const
Definition: EventScheduler.h:162
bool isPending(Event &event) const
Definition: EventScheduler.cpp:50
void reset()
Definition: EventScheduler.cpp:29
void clock()
Definition: EventScheduler.h:140
event_phase_t phase() const
Definition: EventScheduler.h:172
void cancel(Event &event)
Definition: EventScheduler.cpp:35