add 'wait' parameter to pa_rtpoll_run(), if zero pa_rtpoll_runn will only update the struct pollfd but not wait for an event

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1803 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
Lennart Poettering 2007-09-11 13:15:39 +00:00
parent 597a1c4e82
commit 391d09cd6e
10 changed files with 18 additions and 12 deletions

View file

@ -643,7 +643,7 @@ static void thread_func(void *userdata) {
continue;
/* Hmm, nothing to do. Let's sleep */
if (pa_rtpoll_run(u->rtpoll) < 0) {
if (pa_rtpoll_run(u->rtpoll, 1) < 0) {
pa_log("poll() failed: %s", pa_cstrerror(errno));
goto fail;
}

View file

@ -626,7 +626,7 @@ static void thread_func(void *userdata) {
continue;
/* Hmm, nothing to do. Let's sleep */
if (pa_rtpoll_run(u->rtpoll) < 0) {
if (pa_rtpoll_run(u->rtpoll, 1) < 0) {
pa_log("poll() failed: %s", pa_cstrerror(errno));
goto fail;
}

View file

@ -268,7 +268,7 @@ static void thread_func(void *userdata) {
continue;
/* Hmm, nothing to do. Let's sleep */
if (pa_rtpoll_run(u->rtpoll) < 0) {
if (pa_rtpoll_run(u->rtpoll, 1) < 0) {
pa_log("poll() failed: %s", pa_cstrerror(errno));
goto fail;
}

View file

@ -158,7 +158,7 @@ static void thread_func(void *userdata) {
continue;
/* Hmm, nothing to do. Let's sleep */
if (pa_rtpoll_run(u->rtpoll) < 0) {
if (pa_rtpoll_run(u->rtpoll, 1) < 0) {
pa_log("poll() failed: %s", pa_cstrerror(errno));
goto fail;
}

View file

@ -1031,7 +1031,7 @@ static void thread_func(void *userdata) {
}
/* Hmm, nothing to do. Let's sleep */
if (pa_rtpoll_run(u->rtpoll) < 0) {
if (pa_rtpoll_run(u->rtpoll, 1) < 0) {
pa_log("poll() failed: %s", pa_cstrerror(errno));
goto fail;
}

View file

@ -185,7 +185,7 @@ static void thread_func(void *userdata) {
/* Hmm, nothing to do. Let's sleep */
pollfd->events = u->sink->thread_info.state == PA_SINK_RUNNING ? POLLOUT : 0;
if (pa_rtpoll_run(u->rtpoll) < 0) {
if (pa_rtpoll_run(u->rtpoll, 1) < 0) {
pa_log("poll() failed: %s", pa_cstrerror(errno));
goto fail;
}

View file

@ -164,7 +164,7 @@ static void thread_func(void *userdata) {
/* Hmm, nothing to do. Let's sleep */
pollfd->events = u->source->thread_info.state == PA_SOURCE_RUNNING ? POLLIN : 0;
if (pa_rtpoll_run(u->rtpoll) < 0) {
if (pa_rtpoll_run(u->rtpoll, 1) < 0) {
pa_log("poll() failed: %s", pa_cstrerror(errno));
goto fail;
}

View file

@ -257,7 +257,7 @@ void pa_rtpoll_free(pa_rtpoll *p) {
pa_xfree(p);
}
int pa_rtpoll_run(pa_rtpoll *p) {
int pa_rtpoll_run(pa_rtpoll *p, int wait) {
pa_rtpoll_item *i;
int r = 0;
int no_events = 0;
@ -301,7 +301,10 @@ int pa_rtpoll_run(pa_rtpoll *p) {
rtpoll_rebuild(p);
/* Calculate timeout */
if (p->timer_enabled) {
if (!wait) {
timeout.tv_sec = 0;
timeout.tv_nsec = 0;
} else if (p->timer_enabled) {
struct timespec now;
pa_rtclock_get(&now);

View file

@ -58,7 +58,10 @@ void pa_rtpoll_free(pa_rtpoll *p);
void pa_rtpoll_install(pa_rtpoll *p);
int pa_rtpoll_run(pa_rtpoll *f);
/* Sleep on the rtpoll until the time event, or any of the fd events
* is triggered. If "wait" is 0 we don't sleep but only update the
* struct pollfd. */
int pa_rtpoll_run(pa_rtpoll *f, int wait);
void pa_rtpoll_set_timer_absolute(pa_rtpoll *p, const struct timespec *ts);
void pa_rtpoll_set_timer_periodic(pa_rtpoll *p, pa_usec_t usec);

View file

@ -58,7 +58,7 @@ int main(int argc, char *argv[]) {
pa_rtpoll_install(p);
pa_rtpoll_set_timer_periodic(p, 10000000); /* 10 s */
pa_rtpoll_run(p);
pa_rtpoll_run(p, 1);
pa_rtpoll_item_free(i);
@ -70,7 +70,7 @@ int main(int argc, char *argv[]) {
pollfd->fd = 0;
pollfd->events = POLLIN;
pa_rtpoll_run(p);
pa_rtpoll_run(p, 1);
pa_rtpoll_item_free(i);