*/
class EventDispatcher: public sigc::trackable
{
-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:
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();