]> git.sesse.net Git - vlc/blobdiff - src/audio_output/intf.c
Use var_Inherit* instead of var_CreateGet*.
[vlc] / src / audio_output / intf.c
index d5e0ba78d488d4e5e9ca9b8419b09a3904c3b2c2..017ece22599c726817ffb802045b7c32f5bc9286 100644 (file)
@@ -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 );