X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Feventdispatcher.cpp;h=035a7f286f6284378ee9a9b5795458b2afe91de3;hp=550043f4cffdd99f47144a0af5a7e32686cabad1;hb=HEAD;hpb=292aed8e23ea543b089d5f2a73000de4640befe7 diff --git a/source/io/eventdispatcher.cpp b/source/io/eventdispatcher.cpp index 550043f..035a7f2 100644 --- a/source/io/eventdispatcher.cpp +++ b/source/io/eventdispatcher.cpp @@ -12,7 +12,7 @@ namespace IO { void EventDispatcher::add(EventObject &obj) { Slot slot(*this, obj); - set::iterator i = objects.find(slot); + auto i = objects.find(slot); if(i==objects.end()) { i = objects.insert(slot).first; @@ -25,7 +25,7 @@ void EventDispatcher::add(EventObject &obj) void EventDispatcher::remove(EventObject &obj) { - set::iterator i = objects.find(Slot(*this, obj)); + auto i = objects.find(Slot(*this, obj)); if(i!=objects.end()) { objects.erase(i); @@ -63,17 +63,12 @@ void EventDispatcher::tick(const Time::Timer &timer) void EventDispatcher::dispatch() { - const vector &result = poller.get_result(); - for(vector::const_iterator i=result.begin(); i!=result.end(); ++i) - i->object->event(i->events); + for(const Poller::PolledObject &po: poller.get_result()) + if(objects.count(Slot(*this, *po.object))) + po.object->event(po.events); } -EventDispatcher::Slot::Slot(EventDispatcher &d, EventObject &o): - disp(d), - obj(o) -{ } - void EventDispatcher::Slot::connect_signals() const { obj.signal_events_changed.connect(sigc::mem_fun(this, &Slot::events_changed));