-/* $Id$
-
-This file is part of libmspio
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
#ifndef EVENTDISPATCHER_H_
#define EVENTDISPATCHER_H_
*/
class EventDispatcher: public sigc::trackable
{
-public:
- EventDispatcher();
- void add(Base &);
- void remove(Base &);
-
- /**
- Checks for and dispatches events. If block is true, will block until events
- are available.
- */
- void tick(bool =true);
private:
struct Slot
{
Slot(Base *o): obj(o) { }
};
+
typedef std::map<Base *, Slot> SlotMap;
Poller poller;
SlotMap objects;
+public:
+ EventDispatcher();
+
+ void add(Base &);
+ void remove(Base &);
+
+ /** Checks for and dispatches events. If there are no events available,
+ blocks until there are. */
+ void tick();
+
+ /** Checks for and dispatches events. If there are no events available,
+ waits at most the specified time before returning. */
+ void tick(const Time::TimeDelta &);
+
+private:
void object_events_changed(PollEvent, Base *);
void object_deleted(Base *);
+ void dispatch();
};
} // namespace IO