From: RĂ©mi Denis-Courmont Date: Tue, 10 Nov 2009 20:45:56 +0000 (+0200) Subject: ALSA: warn user on current alsa-lib versions if re-open fails X-Git-Tag: 1.1.0-ff~2523 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=f4cae1c6485e9f84d2e9c625ec334b96b1937737;p=vlc ALSA: warn user on current alsa-lib versions if re-open fails This bug is fixed in alsa-lib git repository. Depending on the underlying ALSA driver, re-opening the sound card might fail if VLC forked and executed another process. This is especially bad with xdg-screensaver, although this could affect other -earlier- usages of fork+exec or posix_spawn. --- diff --git a/modules/audio_output/alsa.c b/modules/audio_output/alsa.c index 1594b7f8d0..28d3102246 100644 --- a/modules/audio_output/alsa.c +++ b/modules/audio_output/alsa.c @@ -45,6 +45,7 @@ #define ALSA_PCM_NEW_HW_PARAMS_API #define ALSA_PCM_NEW_SW_PARAMS_API #include +#include /*#define ALSA_DEBUG*/ @@ -261,10 +262,24 @@ static void Probe( aout_instance_t * p_aout, } var_Change( p_aout, "audio-device", VLC_VAR_CHOICESCOUNT, &val, NULL ); +#if (SND_LIB_VERSION <= 0x010015) +# warning Please update alsa-lib to version > 1.0.21a. + var_Create( p_aout->p_libvlc, "alsa-working", VLC_VAR_BOOL ); + if( val.i_int <= 0 ) + { + if( var_GetBool( p_aout->p_libvlc, "alsa-working" ) ) + dialog_FatalWait( p_aout, "ALSA version problem", + "VLC failed to re-open your sound card.\n" + "Please update alsa-lib to version 1.0.22 or higher " + "to fix this issue." ); + } + else + var_SetBool( p_aout->p_libvlc, "alsa-working", true ); +#endif if( val.i_int <= 0 ) { /* Probe() has failed. */ - msg_Dbg( p_aout, "failed to find a usable alsa configuration" ); + msg_Dbg( p_aout, "failed to find a usable ALSA configuration" ); var_Destroy( p_aout, "audio-device" ); return; }