23 #ifndef EVENTSCHEDULER_H 24 #define EVENTSCHEDULER_H 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 Definition: exsid-emu.cpp:29
void reset()
Definition: EventScheduler.cpp:29
event_clock_t getTime(event_clock_t clock, event_phase_t phase) const
Definition: EventScheduler.h:174
void clock()
Definition: EventScheduler.h:140
void cancel(Event &event)
Definition: EventScheduler.cpp:35
Definition: EventScheduler.h:61
void schedule(Event &event, unsigned int cycles, event_phase_t phase)
Definition: EventScheduler.h:106
event_clock_t getTime(event_phase_t phase) const
Definition: EventScheduler.h:162
event_phase_t phase() const
Definition: EventScheduler.h:184
bool isPending(Event &event) const
Definition: EventScheduler.cpp:50
void schedule(Event &event, unsigned int cycles)
Definition: EventScheduler.h:119