static aout_instance_t *findAout (vlc_object_t *obj)
{
- input_thread_t *p_input = playlist_CurrentInput (pl_Get (obj));
+ input_thread_t *(*pf_find_input) (vlc_object_t *);
+
+ pf_find_input = var_GetAddress (obj, "find-input-callback");
+ if (unlikely(pf_find_input == NULL))
+ return NULL;
+
+ input_thread_t *p_input = pf_find_input (obj);
if (p_input == NULL)
return NULL;
vlc_object_release (p_input);
return p_aout;
}
+#define findAout(o) findAout(VLC_OBJECT(o))
/*
* Volume management
INCREMENT_VOLUME=4,
TOGGLE_MUTE=8
};
+
/*****************************************************************************
* doVolumeChanges : handle all volume changes. Internal use only to ease
* variables locking.
*****************************************************************************/
+static
int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps,
audio_volume_t i_volume, audio_volume_t * i_return_volume,
bool b_mute )
i_volume = AOUT_VOLUME_MIN;
else
i_volume = i_new_volume;
-
- if ( i_return_volume != NULL )
- *i_return_volume = i_volume;
}
var_Create( p_object->p_libvlc, "saved-volume", VLC_VAR_INTEGER );
vlc_object_release( p_aout );
}
+ if ( i_return_volume != NULL )
+ *i_return_volume = i_volume;
return i_result;
}
int aout_FindAndRestart( vlc_object_t * p_this, const char *psz_name,
vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
- aout_instance_t * p_aout = findAout( p_this );
+ aout_instance_t * p_aout = findAout( pl_Get(p_this) );
(void)psz_name; (void)oldval; (void)newval; (void)p_data;
if ( p_aout == NULL ) return VLC_SUCCESS;