]> git.tdb.fi Git - libs/core.git/blobdiff - source/eventdispatcher.cpp
Allow polling an empty set of objects
[libs/core.git] / source / eventdispatcher.cpp
index 04147e9bee4647e6d452c2d8e35e4f3eac61265c..d7e367c67e7141e34d213a607d3d00c859aa4b71 100644 (file)
@@ -9,9 +9,6 @@ Distributed under the LGPL
 #include "eventdispatcher.h"
 #include "poll.h"
 
-#include <iostream>
-using namespace std;
-
 namespace Msp {
 namespace IO {
 
@@ -20,7 +17,6 @@ EventDispatcher::EventDispatcher()
 
 void EventDispatcher::add(Base &obj)
 {
-       //cout<<"evdisp add "<<&obj<<'\n';
        SlotMap::iterator i=objects.find(&obj);
        if(i==objects.end())
        {
@@ -35,7 +31,6 @@ void EventDispatcher::add(Base &obj)
 
 void EventDispatcher::remove(Base &obj)
 {
-       //cout<<"evdisp remove "<<&obj<<'\n';
        SlotMap::iterator i=objects.find(&obj);
        if(i!=objects.end())
        {
@@ -47,23 +42,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 +70,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