fix 100% CPU load when idle with ALSA
authorJindrich Makovicka <makovick@gmail.com>
Sun, 17 Oct 2010 17:28:14 +0000 (19:28 +0200)
committermalc <av1474@comtv.ru>
Sun, 17 Oct 2010 20:39:02 +0000 (00:39 +0400)
Playback control function did not disable polling when playback stops.
Caused busy spinning of the main loop due to unprocessed events.

Signed-off-by: Jindrich Makovicka <makovick@gmail.com>
Signed-off-by: malc <av1474@comtv.ru>
audio/alsaaudio.c

index f0171f9..3ca4078 100644 (file)
@@ -889,6 +889,10 @@ static int alsa_ctl_out (HWVoiceOut *hw, int cmd, ...)
 
     case VOICE_DISABLE:
         ldebug ("disabling voice\n");
+        if (hw->poll_mode) {
+            hw->poll_mode = 0;
+            alsa_fini_poll (&alsa->pollhlp);
+        }
         return alsa_voice_ctl (alsa->handle, "playback", 1);
     }