openMSX
AlarmEvent.cc
Go to the documentation of this file.
1 #include "AlarmEvent.hh"
2 
3 namespace openmsx {
4 
6  EventListener& listener_,
7  EventType type_,
9  : distributor(distributor_)
10  , listener(listener_)
11  , type(type_)
12 {
13  distributor.registerEventListener(type, listener, priority);
14 }
15 
17 {
18  prepareDelete();
19  distributor.unregisterEventListener(type, listener);
20 }
21 
22 bool AlarmEvent::alarm()
23 {
24  // Runs in timer thread.
25  // Schedule event so that the main thread can do the real work.
26  distributor.distributeEvent(std::make_shared<SimpleEvent>(type));
27  return false; // don't repeat
28 }
29 
30 } // namespace openmsx
void registerEventListener(EventType type, EventListener &listener, Priority priority=OTHER)
Registers a given object to receive certain events.
void unregisterEventListener(EventType type, EventListener &listener)
Unregisters a previously registered event listener.
Priority
Priorities from high to low, higher priority listeners can block events for lower priority listeners...
void distributeEvent(const EventPtr &event)
Schedule the given event for delivery.
void prepareDelete()
Concrete subclasses MUST call this method in their destructor.
Definition: Alarm.cc:214
AlarmEvent(EventDistributor &distributor, EventListener &listener, EventType type, EventDistributor::Priority priority=EventDistributor::OTHER)
Definition: AlarmEvent.cc:5
EventType
Definition: Event.hh:11