X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Faudio_output%2Fintf.c;h=5d5b391b9ef91e2962f292995847e0e562328652;hb=e3aaa2ff4777f99c594de1b6434879e3b2cf4c15;hp=5ec9a2c8d3e306c13b89f73840dde37ded1a7008;hpb=f055f01f00d6a5744e67fc6b240f1641779033c0;p=vlc diff --git a/src/audio_output/intf.c b/src/audio_output/intf.c index 5ec9a2c8d3..5d5b391b9e 100644 --- a/src/audio_output/intf.c +++ b/src/audio_output/intf.c @@ -1,8 +1,8 @@ /***************************************************************************** * intf.c : audio output API towards the interface modules ***************************************************************************** - * Copyright (C) 2002 VideoLAN - * $Id: intf.c,v 1.16 2003/02/09 01:13:43 massiot Exp $ + * Copyright (C) 2002-2004 VideoLAN + * $Id$ * * Authors: Christophe Massiot * @@ -61,12 +61,24 @@ *****************************************************************************/ int __aout_VolumeGet( vlc_object_t * p_object, audio_volume_t * pi_volume ) { - int i; + int i_volume, i_result = 0; + aout_instance_t * p_aout = vlc_object_find( p_object, VLC_OBJECT_AOUT, + FIND_ANYWHERE ); - i = config_GetInt( p_object, "volume" ); - if ( pi_volume != NULL ) *pi_volume = (audio_volume_t)i; + i_volume = config_GetInt( p_object, "volume" ); + if ( pi_volume != NULL ) *pi_volume = (audio_volume_t)i_volume; - return 0; + if ( p_aout == NULL ) return 0; + + vlc_mutex_lock( &p_aout->mixer_lock ); + if ( !p_aout->mixer.b_error ) + { + i_result = p_aout->output.pf_volume_get( p_aout, pi_volume ); + } + vlc_mutex_unlock( &p_aout->mixer_lock ); + + vlc_object_release( p_aout ); + return i_result; } /***************************************************************************** @@ -74,6 +86,7 @@ int __aout_VolumeGet( vlc_object_t * p_object, audio_volume_t * pi_volume ) *****************************************************************************/ int __aout_VolumeSet( vlc_object_t * p_object, audio_volume_t i_volume ) { + vlc_value_t val; aout_instance_t * p_aout = vlc_object_find( p_object, VLC_OBJECT_AOUT, FIND_ANYWHERE ); int i_result = 0; @@ -90,6 +103,9 @@ int __aout_VolumeSet( vlc_object_t * p_object, audio_volume_t i_volume ) vlc_mutex_unlock( &p_aout->mixer_lock ); vlc_object_release( p_aout ); + + val.b_bool = VLC_TRUE; + var_Set( p_aout, "intf-change", val ); return i_result; } @@ -131,23 +147,25 @@ int __aout_VolumeUp( vlc_object_t * p_object, int i_nb_steps, { aout_instance_t * p_aout = vlc_object_find( p_object, VLC_OBJECT_AOUT, FIND_ANYWHERE ); - int i_result = 0, i; + int i_result = 0, i_volume = 0; - i = config_GetInt( p_object, "volume" ); - i += AOUT_VOLUME_STEP * i_nb_steps; - if ( i > AOUT_VOLUME_MAX ) + i_volume = config_GetInt( p_object, "volume" ); + i_volume += AOUT_VOLUME_STEP * i_nb_steps; + if ( i_volume > AOUT_VOLUME_MAX ) { - i = AOUT_VOLUME_MAX; + i_volume = AOUT_VOLUME_MAX; } - config_PutInt( p_object, "volume", i ); - if ( pi_volume != NULL ) *pi_volume = (audio_volume_t)i; + config_PutInt( p_object, "volume", i_volume ); + var_Create( p_object->p_libvlc, "saved-volume", VLC_VAR_INTEGER ); + var_SetInteger( p_object->p_libvlc, "saved-volume" , (audio_volume_t) i_volume ); + if ( pi_volume != NULL ) *pi_volume = (audio_volume_t) i_volume; if ( p_aout == NULL ) return 0; vlc_mutex_lock( &p_aout->mixer_lock ); if ( !p_aout->mixer.b_error ) { - i_result = p_aout->output.pf_volume_set( p_aout, (audio_volume_t)i ); + i_result = p_aout->output.pf_volume_set( p_aout, (audio_volume_t) i_volume ); } vlc_mutex_unlock( &p_aout->mixer_lock ); @@ -166,23 +184,25 @@ int __aout_VolumeDown( vlc_object_t * p_object, int i_nb_steps, { aout_instance_t * p_aout = vlc_object_find( p_object, VLC_OBJECT_AOUT, FIND_ANYWHERE ); - int i_result = 0, i; + int i_result = 0, i_volume = 0; - i = config_GetInt( p_object, "volume" ); - i -= AOUT_VOLUME_STEP * i_nb_steps; - if ( i < AOUT_VOLUME_MIN ) + i_volume = config_GetInt( p_object, "volume" ); + i_volume -= AOUT_VOLUME_STEP * i_nb_steps; + if ( i_volume < AOUT_VOLUME_MIN ) { - i = AOUT_VOLUME_MIN; + i_volume = AOUT_VOLUME_MIN; } - config_PutInt( p_object, "volume", i ); - if ( pi_volume != NULL ) *pi_volume = (audio_volume_t)i; + config_PutInt( p_object, "volume", i_volume ); + var_Create( p_object->p_libvlc, "saved-volume", VLC_VAR_INTEGER ); + var_SetInteger( p_object->p_libvlc, "saved-volume", (audio_volume_t) i_volume ); + if ( pi_volume != NULL ) *pi_volume = (audio_volume_t) i_volume; if ( p_aout == NULL ) return 0; vlc_mutex_lock( &p_aout->mixer_lock ); if ( !p_aout->mixer.b_error ) { - i_result = p_aout->output.pf_volume_set( p_aout, (audio_volume_t)i ); + i_result = p_aout->output.pf_volume_set( p_aout, (audio_volume_t) i_volume ); } vlc_mutex_unlock( &p_aout->mixer_lock ); @@ -206,13 +226,16 @@ int __aout_VolumeMute( vlc_object_t * p_object, audio_volume_t * pi_volume ) { /* Mute */ i_result = aout_VolumeSet( p_object, AOUT_VOLUME_MIN ); - config_PutInt( p_object, "saved-volume", (int)i_volume ); + var_Create( p_object->p_libvlc, "saved-volume", VLC_VAR_INTEGER ); + var_SetInteger( p_object->p_libvlc, "saved-volume", (int)i_volume ); if ( pi_volume != NULL ) *pi_volume = AOUT_VOLUME_MIN; } else { /* Un-mute */ - i_volume = (audio_volume_t)config_GetInt( p_object, "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" ); i_result = aout_VolumeSet( p_object, i_volume ); if ( pi_volume != NULL ) *pi_volume = i_volume; } @@ -383,12 +406,13 @@ int aout_Restart( aout_instance_t * p_aout ) * that when those are changed, it is a significant change which implies * rebuilding the audio-device and audio-channels variables. *****************************************************************************/ -void aout_FindAndRestart( vlc_object_t * p_this ) +int aout_FindAndRestart( vlc_object_t * p_this, const char *psz_name, + vlc_value_t oldval, vlc_value_t val, void *p_data ) { aout_instance_t * p_aout = vlc_object_find( p_this, VLC_OBJECT_AOUT, FIND_ANYWHERE ); - if ( p_aout == NULL ) return; + if ( p_aout == NULL ) return VLC_SUCCESS; if ( var_Type( p_aout, "audio-device" ) != 0 ) { @@ -401,6 +425,8 @@ void aout_FindAndRestart( vlc_object_t * p_this ) aout_Restart( p_aout ); vlc_object_release( p_aout ); + + return VLC_SUCCESS; } /*****************************************************************************