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;
184 event_phase_t
phase()
const {
return static_cast<event_phase_t
>(currentTime & 1); }
189 #endif // EVENTSCHEDULER_H
void schedule(Event &event, unsigned int cycles)
Definition: EventScheduler.h:119
bool isPending(Event &event) const
Definition: EventScheduler.cpp:50
void cancel(Event &event)
Definition: EventScheduler.cpp:35
void clock()
Definition: EventScheduler.h:140
Definition: EventScheduler.h:62
event_clock_t getTime(event_phase_t phase) const
Definition: EventScheduler.h:162
void reset()
Definition: EventScheduler.cpp:29
void schedule(Event &event, unsigned int cycles, event_phase_t phase)
Definition: EventScheduler.h:106
event_phase_t phase() const
Definition: EventScheduler.h:184
event_clock_t getTime(event_clock_t clock, event_phase_t phase) const
Definition: EventScheduler.h:174