- int i_result = VLC_SUCCESS;
- int i_volume_step = 1, i_new_volume = 0;
- bool b_var_mute = false;
- aout_instance_t *p_aout = vlc_object_find( p_object, VLC_OBJECT_AOUT,
- FIND_ANYWHERE );
-
- if ( p_aout ) aout_lock_volume( p_aout );
-
- b_var_mute = (bool)var_GetBool( p_object->p_libvlc, "volume-muted");
-
- const bool b_unmute_condition = ( /* Also unmute on increments */
- ( action == INCREMENT_VOLUME )
- || /* On explicit unmute */
- ( ( action == SET_MUTE ) && ( b_var_mute && !b_mute ) )
- || /* On toggle from muted */
- ( ( action == TOGGLE_MUTE ) && b_var_mute ) );
-
- const bool b_mute_condition = ( !b_var_mute
- && ( /* explicit */
- ( ( action == SET_MUTE ) && b_mute )
- || /* or toggle */
- ( action == TOGGLE_MUTE )
- ));
-
- /* 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 );
- }
- else if ( b_mute_condition )
- {
- /* We need an initial value to backup later */
- i_volume = config_GetInt( p_object, "volume" );
- }
-
- if ( action == INCREMENT_VOLUME )
- {
- i_volume_step = config_GetInt( p_object->p_libvlc, "volume-step" );