X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Faudio_output%2Fintf.c;h=493ad5c71bb22c768390ecac596b70adc92d0f99;hb=67bc4a20d784131ce7de8292c60c0829f4784735;hp=3fadb4fbc319a891ed5e5ba031d376a34f4b75da;hpb=f3544f08ce50d1638b6121948a9879f73aba6bd9;p=vlc diff --git a/src/audio_output/intf.c b/src/audio_output/intf.c index 3fadb4fbc3..493ad5c71b 100644 --- a/src/audio_output/intf.c +++ b/src/audio_output/intf.c @@ -104,14 +104,16 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps, if ( p_aout ) aout_lock_volume( p_aout ); - b_var_mute = (bool)var_GetBool( p_object->p_libvlc, "volume-muted"); + 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,14 +122,23 @@ 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 ) { /* Restore saved volume */ - var_Create( p_object->p_libvlc, "saved-volume", VLC_VAR_INTEGER ); - i_volume = (audio_volume_t)var_GetInteger( p_object->p_libvlc, - "saved-volume" ); - var_SetBool( p_object->p_libvlc, "volume-muted", false ); + i_volume = var_GetInteger( p_object, "saved-volume" ); + var_SetBool( p_object, "volume-muted", false ); } else if ( b_mute_condition ) { @@ -137,7 +148,7 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps, if ( action == INCREMENT_VOLUME ) { - i_volume_step = config_GetInt( p_object->p_libvlc, "volume-step" ); + i_volume_step = var_InheritInteger( p_object, "volume-step" ); if ( !b_unmute_condition ) i_volume = config_GetInt( p_object, "volume" ); @@ -152,14 +163,13 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps, i_volume = i_new_volume; } - var_Create( p_object->p_libvlc, "saved-volume", VLC_VAR_INTEGER ); - var_SetInteger( p_object->p_libvlc, "saved-volume" , i_volume ); + var_SetInteger( p_object, "saved-volume" , i_volume ); /* On Mute */ if ( b_mute_condition ) { i_volume = AOUT_VOLUME_MIN; - var_SetBool( p_object->p_libvlc, "volume-muted", true ); + var_SetBool( p_object, "volume-muted", true ); } /* Commit volume changes */ @@ -176,7 +186,7 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps, } /* trigger callbacks */ - var_TriggerCallback( p_object->p_libvlc, "volume-change"); + var_TriggerCallback( p_object, "volume-change" ); if ( p_aout ) { var_SetBool( p_aout, "intf-change", true ); @@ -278,7 +288,7 @@ bool aout_IsMuted( vlc_object_t * p_object ) bool b_return_val; aout_instance_t * p_aout = findAout( p_object ); if ( p_aout ) aout_lock_volume( p_aout ); - b_return_val = var_GetBool( p_object->p_libvlc, "volume-muted"); + b_return_val = var_GetBool( p_object, "volume-muted"); if ( p_aout ) { aout_unlock_volume( p_aout );