]> git.tdb.fi Git - libs/core.git/blobdiff - source/eventdispatcher.cpp
Refactor EventDispatcher::tick to allow arbitary timeouts
[libs/core.git] / source / eventdispatcher.cpp
index 04147e9bee4647e6d452c2d8e35e4f3eac61265c..2150fe23b7055fb0fd1e0d5eb3ae770d60c9b9dc 100644 (file)
@@ -47,23 +47,22 @@ void EventDispatcher::remove(Base &obj)
        }
 }
 
-void EventDispatcher::tick(bool block)
+void EventDispatcher::tick()
 {
        if(objects.empty())
                return;
 
-       int ret;
-       if(block)
-               ret=poller.poll();
-       else
-               ret=poller.poll(Time::zero);
+       if(poller.poll()>0)
+               dispatch();
+}
 
-       if(ret>0)
-       {
-               const Poller::SlotSeq &result=poller.get_result();
-               for(Poller::SlotSeq::const_iterator i=result.begin(); i!=result.end(); ++i)
-                       i->object->event(i->events);
-       }
+void EventDispatcher::tick(const Time::TimeDelta &dt)
+{
+       if(objects.empty())
+               return;
+
+       if(poller.poll(dt)>0)
+               dispatch();
 }
 
 void EventDispatcher::object_events_changed(PollEvent ev, Base *obj)
@@ -76,5 +75,12 @@ void EventDispatcher::object_deleted(Base *obj)
        remove(*obj);
 }
 
+void EventDispatcher::dispatch()
+{
+       const Poller::SlotSeq &result=poller.get_result();
+       for(Poller::SlotSeq::const_iterator i=result.begin(); i!=result.end(); ++i)
+               i->object->event(i->events);
+}
+
 } // namespace IO
 } // namespace Msp