#include <sys/types.h>
#include <stdio.h>
-#include <signal.h>
#include <string.h>
#include <errno.h>
#include <pulsecore/llist.h>
#include <pulsecore/flist.h>
#include <pulsecore/core-util.h>
-#include <pulsecore/winsock.h>
#include <pulsecore/ratelimit.h>
+#include <pulse/rtclock.h>
#include "rtpoll.h"
unsigned n_pollfd_alloc, n_pollfd_used;
struct timeval next_elapse;
- pa_bool_t timer_enabled:1;
+ bool timer_enabled:1;
- pa_bool_t scan_for_dead:1;
- pa_bool_t running:1;
- pa_bool_t rebuild_needed:1;
- pa_bool_t quit:1;
- pa_bool_t timer_elapsed:1;
+ bool scan_for_dead:1;
+ bool running:1;
+ bool rebuild_needed:1;
+ bool quit:1;
+ bool timer_elapsed:1;
#ifdef DEBUG_TIMING
pa_usec_t timestamp;
struct pa_rtpoll_item {
pa_rtpoll *rtpoll;
- pa_bool_t dead;
+ bool dead;
pa_rtpoll_priority_t priority;
pa_assert(p);
- p->rebuild_needed = FALSE;
+ p->rebuild_needed = false;
if (p->n_pollfd_used > p->n_pollfd_alloc) {
/* Hmm, we have to allocate some more space */
for (i = p->items; i; i = i->next) {
- if (i->n_pollfd > 0) {
+ if (i->n_pollfd > 0) {
size_t l = i->n_pollfd * sizeof(struct pollfd);
if (i->pollfd)
if (pa_flist_push(PA_STATIC_FLIST_GET(items), i) < 0)
pa_xfree(i);
- p->rebuild_needed = TRUE;
+ p->rebuild_needed = true;
}
void pa_rtpoll_free(pa_rtpoll *p) {
}
}
-int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) {
+int pa_rtpoll_run(pa_rtpoll *p, bool wait_op) {
pa_rtpoll_item *i;
int r = 0;
struct timeval timeout;
pa_assert(p);
pa_assert(!p->running);
- p->running = TRUE;
- p->timer_elapsed = FALSE;
+#ifdef DEBUG_TIMING
+ pa_log("rtpoll_run");
+#endif
+
+ p->running = true;
+ p->timer_elapsed = false;
/* First, let's do some work */
for (i = p->items; i && i->priority < PA_RTPOLL_NEVER; i = i->next) {
if (!i->work_cb)
continue;
- if (p->quit)
+ if (p->quit) {
+#ifdef DEBUG_TIMING
+ pa_log("rtpoll finish");
+#endif
goto finish;
+ }
if ((k = i->work_cb(i)) != 0) {
if (k < 0)
r = k;
-
+#ifdef DEBUG_TIMING
+ pa_log("rtpoll finish");
+#endif
goto finish;
}
}
if (k < 0)
r = k;
-
+#ifdef DEBUG_TIMING
+ pa_log("rtpoll finish");
+#endif
goto finish;
}
}
pa_usec_t now = pa_rtclock_now();
p->awake = now - p->timestamp;
p->timestamp = now;
+ if (!wait_op || p->quit || p->timer_enabled)
+ pa_log("poll timeout: %d ms ",(int) ((timeout.tv_sec*1000) + (timeout.tv_usec / 1000)));
+ else
+ pa_log("poll timeout is ZERO");
}
#endif
finish:
- p->running = FALSE;
+ p->running = false;
if (p->scan_for_dead) {
pa_rtpoll_item *n;
- p->scan_for_dead = FALSE;
+ p->scan_for_dead = false;
for (i = p->items; i; i = n) {
n = i->next;
pa_assert(p);
pa_timeval_store(&p->next_elapse, usec);
- p->timer_enabled = TRUE;
+ p->timer_enabled = true;
}
void pa_rtpoll_set_timer_relative(pa_rtpoll *p, pa_usec_t usec) {
pa_rtclock_get(&p->next_elapse);
pa_timeval_add(&p->next_elapse, usec);
- p->timer_enabled = TRUE;
+ p->timer_enabled = true;
}
void pa_rtpoll_set_timer_disabled(pa_rtpoll *p) {
pa_assert(p);
memset(&p->next_elapse, 0, sizeof(p->next_elapse));
- p->timer_enabled = FALSE;
+ p->timer_enabled = false;
}
pa_rtpoll_item *pa_rtpoll_item_new(pa_rtpoll *p, pa_rtpoll_priority_t prio, unsigned n_fds) {
i = pa_xnew(pa_rtpoll_item, 1);
i->rtpoll = p;
- i->dead = FALSE;
+ i->dead = false;
i->n_pollfd = n_fds;
i->pollfd = NULL;
i->priority = prio;
pa_assert(i);
if (i->rtpoll->running) {
- i->dead = TRUE;
- i->rtpoll->scan_for_dead = TRUE;
+ i->dead = true;
+ i->rtpoll->scan_for_dead = true;
return;
}
void pa_rtpoll_quit(pa_rtpoll *p) {
pa_assert(p);
- p->quit = TRUE;
+ p->quit = true;
}
-pa_bool_t pa_rtpoll_timer_elapsed(pa_rtpoll *p) {
+bool pa_rtpoll_timer_elapsed(pa_rtpoll *p) {
pa_assert(p);
return p->timer_elapsed;