#include "eventdispatcher.h"
#include "poll.h"
-#include <iostream>
-using namespace std;
-
namespace Msp {
namespace IO {
void EventDispatcher::add(Base &obj)
{
- //cout<<"evdisp add "<<&obj<<'\n';
SlotMap::iterator i=objects.find(&obj);
if(i==objects.end())
{
void EventDispatcher::remove(Base &obj)
{
- //cout<<"evdisp remove "<<&obj<<'\n';
SlotMap::iterator i=objects.find(&obj);
if(i!=objects.end())
{
}
}
-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)
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