X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fio%2Fpoll.cpp;h=9697ebfc3aa2094225325ea0aebcadb75d19953d;hb=a56e05106571f28dc3044296849ccd5127d7d859;hp=d78a2c01c023602bbcdb080abde3c0eab798887e;hpb=e46de55d3c8f65d3b0eeaee76247476695e9eb7c;p=libs%2Fcore.git diff --git a/source/io/poll.cpp b/source/io/poll.cpp index d78a2c0..9697ebf 100644 --- a/source/io/poll.cpp +++ b/source/io/poll.cpp @@ -6,7 +6,9 @@ #include #include #include -#include "base.h" +#include "eventobject.h" +#include "handle.h" +#include "handle_private.h" #include "poll.h" using namespace std; @@ -55,13 +57,13 @@ inline PollEvent poll_event_from_sys(int event) return result; } -inline PollEvent do_poll(Base &obj, PollEvent pe, int timeout) +inline PollEvent do_poll(EventObject &obj, PollEvent pe, int timeout) { #ifdef WIN32 if(timeout<0) timeout = INFINITE; - DWORD ret = WaitForSingleObject(obj.get_event_handle(), timeout); + DWORD ret = WaitForSingleObject(*obj.get_event_handle(), timeout); if(ret==WAIT_OBJECT_0) return pe; else if(ret==WAIT_FAILED) @@ -69,7 +71,7 @@ inline PollEvent do_poll(Base &obj, PollEvent pe, int timeout) return P_NONE; #else - pollfd pfd = { obj.get_event_handle(), sys_poll_event(pe), 0 }; + pollfd pfd = { *obj.get_event_handle(), sys_poll_event(pe), 0 }; int ret = ::poll(&pfd, 1, timeout); if(ret==-1) @@ -105,7 +107,7 @@ Poller::Poller(): objs_changed(false) { } -void Poller::set_object(Base &obj, PollEvent ev) +void Poller::set_object(EventObject &obj, PollEvent ev) { // Verify that the object has an event handle if(ev) @@ -152,14 +154,14 @@ void Poller::rebuild_array() priv->handles.clear(); for(EventMap::iterator i=objects.begin(); i!=objects.end(); ++i) - priv->handles.push_back(i->first->get_event_handle()); + priv->handles.push_back(*i->first->get_event_handle()); #else priv->pfd.clear(); for(EventMap::iterator i=objects.begin(); i!=objects.end(); ++i) { pollfd p; - p.fd = i->first->get_event_handle(); + p.fd = *i->first->get_event_handle(); p.events = sys_poll_event(i->second); priv->pfd.push_back(p); } @@ -216,12 +218,12 @@ int Poller::do_poll(int timeout) } -PollEvent poll(Base &obj, PollEvent pe) +PollEvent poll(EventObject &obj, PollEvent pe) { return do_poll(obj, pe, -1); } -PollEvent poll(Base &obj, PollEvent pe, const Time::TimeDelta &timeout) +PollEvent poll(EventObject &obj, PollEvent pe, const Time::TimeDelta &timeout) { if(timeout