diff --git a/spa/examples/example-control.c b/spa/examples/example-control.c index 6a4709b26..f502cdfff 100644 --- a/spa/examples/example-control.c +++ b/spa/examples/example-control.c @@ -440,15 +440,7 @@ static void *loop(void *user_data) /* after */ for (i = 0; i < data->n_sources; i++) { struct spa_source *p = &data->sources[i]; - p->rmask = 0; - if (data->fds[i].revents & POLLIN) - p->rmask |= SPA_IO_IN; - if (data->fds[i].revents & POLLOUT) - p->rmask |= SPA_IO_OUT; - if (data->fds[i].revents & POLLHUP) - p->rmask |= SPA_IO_HUP; - if (data->fds[i].revents & POLLERR) - p->rmask |= SPA_IO_ERR; + p->rmask = data->fds[i].revents; } for (i = 0; i < data->n_sources; i++) { struct spa_source *p = &data->sources[i]; diff --git a/spa/include/spa/support/system.h b/spa/include/spa/support/system.h index dfb79c2e1..dae9062a6 100644 --- a/spa/include/spa/support/system.h +++ b/spa/include/spa/support/system.h @@ -43,9 +43,9 @@ struct spa_system { struct spa_interface iface; }; /* IO events */ #define SPA_IO_IN (1 << 0) -#define SPA_IO_OUT (1 << 1) -#define SPA_IO_HUP (1 << 2) +#define SPA_IO_OUT (1 << 2) #define SPA_IO_ERR (1 << 3) +#define SPA_IO_HUP (1 << 4) /* flags */ #define SPA_FD_CLOEXEC (1<<0) diff --git a/spa/plugins/support/evl-system.c b/spa/plugins/support/evl-system.c index 7281b0d01..39e923150 100644 --- a/spa/plugins/support/evl-system.c +++ b/spa/plugins/support/evl-system.c @@ -120,38 +120,6 @@ static int impl_clock_getres(void *object, } /* poll */ -static inline uint32_t spa_io_to_poll(uint32_t mask) -{ - uint32_t events = 0; - - if (mask & SPA_IO_IN) - events |= POLLIN; - if (mask & SPA_IO_OUT) - events |= POLLOUT; - if (mask & SPA_IO_ERR) - events |= POLLERR; - if (mask & SPA_IO_HUP) - events |= POLLHUP; - - return events; -} - -static inline uint32_t spa_poll_to_io(uint32_t events) -{ - uint32_t mask = 0; - - if (events & POLLIN) - mask |= SPA_IO_IN; - if (events & POLLOUT) - mask |= SPA_IO_OUT; - if (events & POLLHUP) - mask |= SPA_IO_HUP; - if (events & POLLERR) - mask |= SPA_IO_ERR; - - return mask; -} - static int impl_pollfd_create(void *object, int flags) { int retval; @@ -181,7 +149,7 @@ static int impl_pollfd_add(void *object, int pfd, int fd, uint32_t events, void e = &impl->entries[impl->n_entries++]; e->pfd = pfd; e->fd = fd; - e->events = spa_io_to_poll(events); + e->events = events; e->data = data; return evl_add_pollfd(pfd, fd, e->events); } @@ -195,7 +163,7 @@ static int impl_pollfd_mod(void *object, int pfd, int fd, uint32_t events, void if (e == NULL) return -ENOENT; - e->events = spa_io_to_poll(events); + e->events = events; e->data = data; return evl_mod_pollfd(pfd, fd, e->events); } @@ -247,7 +215,7 @@ static int impl_pollfd_wait(void *object, int pfd, if (e == NULL) continue; - ev[j].events = spa_poll_to_io(pollset[i].events); + ev[j].events = pollset[i].events; ev[j].data = e->data; j++; } diff --git a/spa/plugins/support/system.c b/spa/plugins/support/system.c index 631af5e7f..fb1c95535 100644 --- a/spa/plugins/support/system.c +++ b/spa/plugins/support/system.c @@ -96,38 +96,6 @@ static int impl_clock_getres(void *object, } /* poll */ -static inline uint32_t spa_io_to_epoll(uint32_t mask) -{ - uint32_t events = 0; - - if (mask & SPA_IO_IN) - events |= EPOLLIN; - if (mask & SPA_IO_OUT) - events |= EPOLLOUT; - if (mask & SPA_IO_ERR) - events |= EPOLLERR; - if (mask & SPA_IO_HUP) - events |= EPOLLHUP; - - return events; -} - -static inline uint32_t spa_epoll_to_io(uint32_t events) -{ - uint32_t mask = 0; - - if (events & EPOLLIN) - mask |= SPA_IO_IN; - if (events & EPOLLOUT) - mask |= SPA_IO_OUT; - if (events & EPOLLHUP) - mask |= SPA_IO_HUP; - if (events & EPOLLERR) - mask |= SPA_IO_ERR; - - return mask; -} - static int impl_pollfd_create(void *object, int flags) { int fl = 0, res; @@ -143,7 +111,7 @@ static int impl_pollfd_add(void *object, int pfd, int fd, uint32_t events, void int res; spa_zero(ep); - ep.events = spa_io_to_epoll(events); + ep.events = events; ep.data.ptr = data; res = epoll_ctl(pfd, EPOLL_CTL_ADD, fd, &ep); @@ -156,7 +124,7 @@ static int impl_pollfd_mod(void *object, int pfd, int fd, uint32_t events, void int res; spa_zero(ep); - ep.events = spa_io_to_epoll(events); + ep.events = events; ep.data.ptr = data; res = epoll_ctl(pfd, EPOLL_CTL_MOD, fd, &ep); @@ -175,11 +143,11 @@ static int impl_pollfd_wait(void *object, int pfd, struct epoll_event ep[n_ev]; int i, nfds; - if (SPA_UNLIKELY((nfds = epoll_wait(pfd, ep, SPA_N_ELEMENTS(ep), timeout)) < 0)) + if (SPA_UNLIKELY((nfds = epoll_wait(pfd, ep, n_ev, timeout)) < 0)) return -errno; for (i = 0; i < nfds; i++) { - ev[i].events = spa_epoll_to_io(ep[i].events); + ev[i].events = ep[i].events; ev[i].data = ep[i].data.ptr; } return nfds;