1#ifndef EVENTDISTRIBUTOR_HH
2#define EVENTDISTRIBUTOR_HH
6#include <condition_variable>
66 bool sleep(
unsigned us);
78 using PriorityMap = std::vector<Entry>;
80 using EventQueue = std::vector<Event>;
81 EventQueue scheduledEvents;
84 std::condition_variable condition;
void unregisterEventListener(EventType type, EventListener &listener)
Unregisters a previously registered event listener.
void distributeEvent(Event &&event)
Schedule the given event for delivery.
EventDistributor(Reactor &reactor)
bool sleep(unsigned us)
Sleep for the specified amount of time, but return early when (another thread) called the distributeE...
void registerEventListener(EventType type, EventListener &listener, Priority priority=OTHER)
Registers a given object to receive certain events.
void deliverEvents()
This actually delivers the events.
Priority
Priorities from high to low, higher priority listeners can block events for lower priority listeners.
Contains the main loop of openMSX.
This file implemented 3 utility functions: