X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Feventdispatcher.h;h=7e89d4739e845f0e0c180845ffedb43184eefd9f;hb=b97d4e9f86e90254ab9edef7ee62a910f6333c78;hp=6f6fe6f72a9455320e8954655eda10f2a01d1dcd;hpb=8dbddc01acb154403c38348fd3fbea22ee0b33c4;p=libs%2Fcore.git diff --git a/source/eventdispatcher.h b/source/eventdispatcher.h index 6f6fe6f..7e89d47 100644 --- a/source/eventdispatcher.h +++ b/source/eventdispatcher.h @@ -1,9 +1,3 @@ -/* $Id$ - -This file is part of libmspio -Copyright © 2007 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ #ifndef EVENTDISPATCHER_H_ #define EVENTDISPATCHER_H_ @@ -20,16 +14,6 @@ on some of them. */ 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 { @@ -39,13 +23,30 @@ private: Slot(Base *o): obj(o) { } }; + typedef std::map 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