X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fnetwork%2Fpoll.c;h=575bb10745ef34c26bdd5c732bebb5c1a017da8e;hb=f659703fb4033420e0607d34bc7cd880a5802ea7;hp=cf9554a30ab687c453425985cf52f6a025b24820;hpb=91ff0ff529a172440ff0d09d206267220d6a2d5b;p=vlc diff --git a/src/network/poll.c b/src/network/poll.c index cf9554a30a..575bb10745 100644 --- a/src/network/poll.c +++ b/src/network/poll.c @@ -30,7 +30,39 @@ #include -#ifdef HAVE_POLL +#ifdef HAVE_MAEMO +# include +# include +# include + +int vlc_poll (struct pollfd *fds, unsigned nfds, int timeout) +{ + struct timespec tsbuf, *ts; + sigset_t set; + int canc, ret; + + if (timeout != -1) + { + div_t d = div (timeout, 1000); + tsbuf.tv_sec = d.quot; + tsbuf.tv_nsec = d.rem * 1000000; + ts = &tsbuf; + } + else + ts = NULL; + + pthread_sigmask (SIG_BLOCK, NULL, &set); + sigdelset (&set, SIGRTMIN); + + canc = vlc_savecancel (); + ret = ppoll (fds, nfds, ts, &set); + vlc_restorecancel (canc); + + vlc_testcancel (); + return ret; +} + +#elif defined (HAVE_POLL) struct pollfd; int vlc_poll (struct pollfd *fds, unsigned nfds, int timeout)