- int i_result = VLC_SUCCESS;
- int i_volume_step = 1, i_new_volume = 0;
- bool b_var_mute = false;
- aout_instance_t *p_aout = findAout( p_object );
-
- if ( p_aout ) aout_lock_volume( p_aout );
-
- b_var_mute = var_GetBool( p_object, "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 */
- i_volume = var_GetInteger( p_object, "saved-volume" );
- var_SetBool( p_object, "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 = var_InheritInteger( p_object, "volume-step" );
-
- if ( !b_unmute_condition )
- i_volume = config_GetInt( p_object, "volume" );
-
- i_new_volume = (int) i_volume + i_volume_step * i_nb_steps;
-
- if ( i_new_volume > AOUT_VOLUME_MAX )
- i_volume = AOUT_VOLUME_MAX;
- else if ( i_new_volume < AOUT_VOLUME_MIN )
- i_volume = AOUT_VOLUME_MIN;
- else
- i_volume = i_new_volume;
- }
-
- var_SetInteger( p_object, "saved-volume" , i_volume );
+ aout_instance_t *aout = findAout (obj);
+
+ /* FIXME: we need interlocking even if aout does not exist! */
+ *aoutp = aout;
+ if (aout != NULL)
+ aout_lock_volume (aout);
+ if (volp != NULL)
+ *volp = var_GetInteger (obj, "volume");
+ if (mutep != NULL)
+ *mutep = var_GetBool (obj, "mute");
+}