X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fio%2Feventdispatcher.cpp;h=cf37c1e7e1fbd81155608895bd14ebe9bd882e10;hb=edeb93fa4182984422f70c453ced8ad3acabe1d0;hp=1583597ee067db4e73b81ecded2b4a609b23a0a7;hpb=e46de55d3c8f65d3b0eeaee76247476695e9eb7c;p=libs%2Fcore.git diff --git a/source/io/eventdispatcher.cpp b/source/io/eventdispatcher.cpp index 1583597..cf37c1e 100644 --- a/source/io/eventdispatcher.cpp +++ b/source/io/eventdispatcher.cpp @@ -1,6 +1,7 @@ -#include +#include #include "base.h" #include "eventdispatcher.h" +#include "eventobject.h" #include "poll.h" namespace Msp { @@ -9,7 +10,10 @@ namespace IO { EventDispatcher::EventDispatcher() { } -void EventDispatcher::add(Base &obj) +EventDispatcher::~EventDispatcher() +{ } + +void EventDispatcher::add(EventObject &obj) { SlotMap::iterator i = objects.find(&obj); if(i==objects.end()) @@ -23,7 +27,7 @@ void EventDispatcher::add(Base &obj) } } -void EventDispatcher::remove(Base &obj) +void EventDispatcher::remove(EventObject &obj) { SlotMap::iterator i = objects.find(&obj); if(i!=objects.end()) @@ -54,12 +58,21 @@ void EventDispatcher::tick(const Time::TimeDelta &dt) dispatch(); } -void EventDispatcher::object_events_changed(PollEvent ev, Base *obj) +void EventDispatcher::tick(const Time::Timer &timer) +{ + const Time::TimeStamp &timeout = timer.get_next_timeout(); + if(timeout) + tick(timeout-Time::now()); + else + tick(); +} + +void EventDispatcher::object_events_changed(PollEvent ev, EventObject *obj) { poller.set_object(*obj, ev); } -void EventDispatcher::object_deleted(Base *obj) +void EventDispatcher::object_deleted(EventObject *obj) { remove(*obj); }