[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