]> code.delx.au - pulseaudio/commitdiff
Fix ALSA fd handling to be compatible with blocking deferred events.
authorPierre Ossman <ossman@cendio.se>
Sun, 16 Apr 2006 09:23:27 +0000 (09:23 +0000)
committerPierre Ossman <ossman@cendio.se>
Sun, 16 Apr 2006 09:23:27 +0000 (09:23 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@724 fefdeb5f-60dc-0310-8127-8f9354f1896f

src/modules/alsa-util.c

index 683db6c06247f0a17d0f04dde6f721cf6be9ee89..2f9be07a785a73afbf6b34965948b0a335c015eb 100644 (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;
     }