]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/poll.cpp
Use the new Handle class to hide platform details from public headers
[libs/core.git] / source / io / poll.cpp
index d78a2c01c023602bbcdb080abde3c0eab798887e..1ca0987ac10fd0ce7795f5649f667ffc6f178c42 100644 (file)
@@ -7,6 +7,8 @@
 #include <msp/strings/format.h>
 #include <msp/time/units.h>
 #include "base.h"
+#include "handle.h"
+#include "handle_private.h"
 #include "poll.h"
 
 using namespace std;
@@ -61,7 +63,7 @@ inline PollEvent do_poll(Base &obj, PollEvent pe, int timeout)
        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)
@@ -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);
        }