X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Faudio_output%2Fintf.c;h=017ece22599c726817ffb802045b7c32f5bc9286;hb=12ade3e3bc975d5426ba4af155b7372c31093b31;hp=d5e0ba78d488d4e5e9ca9b8419b09a3904c3b2c2;hpb=2932220e9ed7d99f8b8397f1b578c9f0a3a1aa3b;p=vlc diff --git a/src/audio_output/intf.c b/src/audio_output/intf.c index d5e0ba78d4..017ece2259 100644 --- a/src/audio_output/intf.c +++ b/src/audio_output/intf.c @@ -106,12 +106,14 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps, b_var_mute = var_GetBool( p_object, "volume-muted"); - const bool b_unmute_condition = ( /* Also unmute on increments */ + const bool b_unmute_condition = ( b_var_mute + && ( /* Unmute: on increments */ ( action == INCREMENT_VOLUME ) || /* On explicit unmute */ - ( ( action == SET_MUTE ) && ( b_var_mute && !b_mute ) ) + ( ( action == SET_MUTE ) && !b_mute ) || /* On toggle from muted */ - ( ( action == TOGGLE_MUTE ) && b_var_mute ) ); + ( action == TOGGLE_MUTE ) + )); const bool b_mute_condition = ( !b_var_mute && ( /* explicit */ @@ -120,6 +122,17 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps, ( action == TOGGLE_MUTE ) )); + /* If muting or unmuting when play hasn't started */ + if ( action == SET_MUTE && !b_unmute_condition && !b_mute_condition ) + { + if ( p_aout ) + { + aout_unlock_volume( p_aout ); + vlc_object_release( p_aout ); + } + return i_result; + } + /* On UnMute */ if ( b_unmute_condition ) { @@ -499,7 +512,7 @@ void aout_EnableFilter( vlc_object_t *p_this, const char *psz_name, { aout_instance_t *p_aout = findAout( p_this ); - if( AoutChangeFilterString( p_this, p_aout, "audio-filter", psz_name, b_add ) ) + if( aout_ChangeFilterString( p_this, p_aout, "audio-filter", psz_name, b_add ) ) { if( p_aout ) AoutInputsMarkToRestart( p_aout );