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) { if (err < 0) {
pa_log_error(__FILE__": Unable to get poll revent: %s", pa_log_error(__FILE__": Unable to get poll revent: %s",
snd_strerror(err)); snd_strerror(err));
a->defer_enable(fdl->defer, 0);
return; 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 else
snd_mixer_handle_events(fdl->mixer); 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) { 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)); assert(a && fdl && (fdl->pcm || fdl->mixer));
a->defer_enable(fdl->defer, 0);
if (fdl->pcm) if (fdl->pcm)
num_fds = snd_pcm_poll_descriptors_count(fdl->pcm); num_fds = snd_pcm_poll_descriptors_count(fdl->pcm);
else else
@ -133,7 +136,6 @@ static void defer_cb(pa_mainloop_api*a, pa_defer_event* e, void *userdata) {
if (err < 0) { if (err < 0) {
pa_log_error(__FILE__": Unable to get poll descriptors: %s", pa_log_error(__FILE__": Unable to get poll descriptors: %s",
snd_strerror(err)); snd_strerror(err));
a->defer_enable(fdl->defer, 0);
return; return;
} }