[MPlayer-dev-eng] [PATCH] oneliner for ao_alsa9 and open async/sync behavior

Pierre Lombard p_l at gmx.fr
Fri Sep 19 17:54:04 CEST 2003


Hi,

If the  sound channel is already  busy the async open  fails and returns
-EBUSY. There's no need to try to open it synchronously as it will block
mplayer till the sound channel is released.

(Granted there's  a very slight  chance your  sound device happen  to be
freed between those two calls but it's not the common case).

The behavior is changed by this oneliner to match the ao_oss behavior
(disable sound if the sound device is busy).

-- 
Best regards,
  Pierre Lombard
-------------- next part --------------
Index: libao2/ao_alsa9.c
===================================================================
RCS file: /cvsroot/mplayer/main/libao2/ao_alsa9.c,v
retrieving revision 1.38
diff -u -r1.38 ao_alsa9.c
--- libao2/ao_alsa9.c	18 Aug 2003 13:39:07 -0000	1.38
+++ libao2/ao_alsa9.c	19 Sep 2003 16:27:54 -0000
@@ -503,7 +503,7 @@
       //modes = 0, SND_PCM_NONBLOCK, SND_PCM_ASYNC
       if ((err = snd_pcm_open(&alsa_handler, alsa_device, SND_PCM_STREAM_PLAYBACK, open_mode)) < 0)
 	{
-	  if (ao_noblock) {
+	  if (err != -EBUSY && ao_noblock) {
 	    printf("alsa-init: open in nonblock-mode failed, trying to open in block-mode\n");
 	    if ((err = snd_pcm_open(&alsa_handler, alsa_device, SND_PCM_STREAM_PLAYBACK, 0)) < 0) {
 	      printf("alsa-init: playback open error: %s\n", snd_strerror(err));


More information about the MPlayer-dev-eng mailing list