* make sure the wakeup fd is polled on wven when no other fd is registered for polling

* initialize mainloop return value to -1
* some optimizations


git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@822 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
Lennart Poettering 2006-04-30 23:33:04 +00:00
parent 19c9dbf361
commit f2fbceb333

View file

@ -301,10 +301,7 @@ static void mainloop_quit(pa_mainloop_api*a, int retval) {
m = a->userdata; m = a->userdata;
assert(a == &m->api); assert(a == &m->api);
m->quit = 1; pa_mainloop_quit(m, retval);
m->retval = retval;
pa_mainloop_wakeup(m);
} }
static const pa_mainloop_api vtable = { static const pa_mainloop_api vtable = {
@ -355,7 +352,8 @@ pa_mainloop *pa_mainloop_new(void) {
m->io_events_scan_dead = m->defer_events_scan_dead = m->time_events_scan_dead = 0; m->io_events_scan_dead = m->defer_events_scan_dead = m->time_events_scan_dead = 0;
m->pollfds = NULL; m->pollfds = NULL;
m->max_pollfds = m->n_pollfds = m->rebuild_pollfds = 0; m->max_pollfds = m->n_pollfds = 0;
m->rebuild_pollfds = 1;
m->quit = m->retval = 0; m->quit = m->retval = 0;
@ -369,6 +367,8 @@ pa_mainloop *pa_mainloop_new(void) {
m->poll_func = NULL; m->poll_func = NULL;
m->poll_func_userdata = NULL; m->poll_func_userdata = NULL;
m->retval = -1;
return m; return m;
} }
@ -419,7 +419,7 @@ static int defer_foreach(void *p, PA_GCC_UNUSED uint32_t idx, int *del, void*use
void pa_mainloop_free(pa_mainloop* m) { void pa_mainloop_free(pa_mainloop* m) {
int all = 1; int all = 1;
assert(m && (m->state != STATE_POLLING)); assert(m);
pa_idxset_foreach(m->io_events, io_foreach, &all); pa_idxset_foreach(m->io_events, io_foreach, &all);
pa_idxset_foreach(m->time_events, time_foreach, &all); pa_idxset_foreach(m->time_events, time_foreach, &all);
@ -772,10 +772,12 @@ int pa_mainloop_run(pa_mainloop *m, int *retval) {
return 0; return 0;
} }
void pa_mainloop_quit(pa_mainloop *m, int r) { void pa_mainloop_quit(pa_mainloop *m, int retval) {
assert(m); assert(m);
m->quit = 1;
m->retval = retval;
pa_mainloop_wakeup(m); pa_mainloop_wakeup(m);
m->quit = r;
} }
pa_mainloop_api* pa_mainloop_get_api(pa_mainloop*m) { pa_mainloop_api* pa_mainloop_get_api(pa_mainloop*m) {