X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Fpoll.cpp;fp=source%2Fio%2Fpoll.cpp;h=4ca2f3d9767ea3315d172ba25dd51831afb7f660;hp=a5d2d023c81d3f1ae730fc69d8d903b5546926db;hb=f24e7b96e76b63c9b9b8a6bce4c7a9db64276ea8;hpb=9f754b788b872f9768af8c3a4f9e001a588e011a diff --git a/source/io/poll.cpp b/source/io/poll.cpp index a5d2d02..4ca2f3d 100644 --- a/source/io/poll.cpp +++ b/source/io/poll.cpp @@ -1,4 +1,5 @@ #include +#include #include "eventobject.h" #include "poll.h" #include "poll_platform.h" @@ -25,20 +26,20 @@ void Poller::set_object(EventObject &obj, PollEvent ev) if(ev) obj.get_event_handle(); - for(vector::iterator i=objects.begin(); i!=objects.end(); ++i) - if(i->object==&obj) + auto i = find_member(objects, &obj, &PolledObject::object); + if(i!=objects.end()) + { + if(ev) + i->events = ev; + else { - if(ev) - i->events = ev; - else - { - *i = objects.back(); - objects.pop_back(); - objs_changed = true; - } - events_changed = true; - return; + *i = objects.back(); + objects.pop_back(); + objs_changed = true; } + events_changed = true; + return; + } if(!ev) return;