Fix ALSA fd handling to be compatible with blocking deferred events.

git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@724 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
Pierre Ossman 2006-04-16 09:23:27 +00:00
parent e8d9a5dbfb
commit e75cc68685

View file

@ -89,7 +89,6 @@ static void io_cb(pa_mainloop_api*a, pa_io_event* e, int fd, pa_io_event_flags_t
if (err < 0) {
pa_log_error(__FILE__": Unable to get poll revent: %s",
snd_strerror(err));
a->defer_enable(fdl->defer, 0);
return;
}
@ -99,6 +98,8 @@ static void io_cb(pa_mainloop_api*a, pa_io_event* e, int fd, pa_io_event_flags_t
else
snd_mixer_handle_events(fdl->mixer);
}
a->defer_enable(fdl->defer, 1);
}
static void defer_cb(pa_mainloop_api*a, pa_defer_event* e, void *userdata) {
@ -108,6 +109,8 @@ static void defer_cb(pa_mainloop_api*a, pa_defer_event* e, void *userdata) {
assert(a && fdl && (fdl->pcm || fdl->mixer));
a->defer_enable(fdl->defer, 0);
if (fdl->pcm)
num_fds = snd_pcm_poll_descriptors_count(fdl->pcm);
else
@ -133,7 +136,6 @@ static void defer_cb(pa_mainloop_api*a, pa_defer_event* e, void *userdata) {
if (err < 0) {
pa_log_error(__FILE__": Unable to get poll descriptors: %s",
snd_strerror(err));
a->defer_enable(fdl->defer, 0);
return;
}