Commit 2932220e authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Store audio output interface variables into the input manager object

This partially fixes multiple media players in LibVLC. This also
removes a few run-away var_Create() in doVolumeChanges().
parent 5a5cbadd
......@@ -458,7 +458,7 @@ static void Run( intf_thread_t *p_intf )
/* status callbacks */
/* Listen to audio volume updates */
var_AddCallback( p_intf->p_libvlc, "volume-change", VolumeChanged, p_intf );
var_AddCallback( p_playlist, "volume-change", VolumeChanged, p_intf );
#ifdef WIN32
/* Get the file descriptor of the console input */
......@@ -789,7 +789,7 @@ static void Run( intf_thread_t *p_intf )
vlc_object_release( p_input );
}
var_DelCallback( p_intf->p_libvlc, "volume-change", VolumeChanged, p_intf );
var_DelCallback( p_playlist, "volume-change", VolumeChanged, p_intf );
vlc_restorecancel( canc );
}
......
......@@ -913,8 +913,8 @@ MainInputManager::MainInputManager( intf_thread_t *_p_intf )
var_AddCallback( THEPL, "repeat", RepeatChanged, this );
var_AddCallback( THEPL, "loop", LoopChanged, this );
var_AddCallback( p_intf->p_libvlc, "volume-change", VolumeChanged, this );
var_AddCallback( p_intf->p_libvlc, "volume-muted", SoundMuteChanged, this );
var_AddCallback( THEPL, "volume-change", VolumeChanged, this );
var_AddCallback( THEPL, "volume-muted", SoundMuteChanged, this );
/* Warn our embedded IM about input changes */
CONNECT( this, inputChanged( input_thread_t * ),
......@@ -944,8 +944,8 @@ MainInputManager::~MainInputManager()
vlc_object_release( p_input );
}
var_DelCallback( p_intf->p_libvlc, "volume-change", VolumeChanged, this );
var_DelCallback( p_intf->p_libvlc, "volume-muted", SoundMuteChanged, this );
var_DelCallback( THEPL, "volume-change", VolumeChanged, this );
var_DelCallback( THEPL, "volume-muted", SoundMuteChanged, this );
var_DelCallback( THEPL, "activity", PLItemChanged, this );
var_DelCallback( THEPL, "item-change", ItemChanged, im );
......
......@@ -146,7 +146,7 @@ VlcProc::VlcProc( intf_thread_t *pIntf ): SkinObject( pIntf ),
#define ADD_CALLBACK( p_object, var ) \
var_AddCallback( p_object, var, onGenericCallback, this );
ADD_CALLBACK( pIntf->p_libvlc, "volume-change" )
ADD_CALLBACK( pIntf->p_sys->p_playlist, "volume-change" )
ADD_CALLBACK( pIntf->p_libvlc, "intf-show" )
ADD_CALLBACK( pIntf->p_sys->p_playlist, "item-current" )
......@@ -200,7 +200,7 @@ VlcProc::~VlcProc()
interaction_Unregister( getIntf() );
var_DelCallback( getIntf()->p_libvlc, "volume-change",
var_DelCallback( getIntf()->p_sys->p_playlist, "volume-change",
onGenericCallback, this );
var_DelCallback( getIntf()->p_libvlc, "intf-show",
onGenericCallback, this );
......
......@@ -104,7 +104,7 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps,
if ( p_aout ) aout_lock_volume( p_aout );
b_var_mute = (bool)var_GetBool( p_object->p_libvlc, "volume-muted");
b_var_mute = var_GetBool( p_object, "volume-muted");
const bool b_unmute_condition = ( /* Also unmute on increments */
( action == INCREMENT_VOLUME )
......@@ -124,10 +124,8 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps,
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 );
i_volume = var_GetInteger( p_object, "saved-volume" );
var_SetBool( p_object, "volume-muted", false );
}
else if ( b_mute_condition )
{
......@@ -137,7 +135,7 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps,
if ( action == INCREMENT_VOLUME )
{
i_volume_step = config_GetInt( p_object->p_libvlc, "volume-step" );
i_volume_step = var_InheritInteger( p_object, "volume-step" );
if ( !b_unmute_condition )
i_volume = config_GetInt( p_object, "volume" );
......@@ -152,14 +150,13 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps,
i_volume = i_new_volume;
}
var_Create( p_object->p_libvlc, "saved-volume", VLC_VAR_INTEGER );
var_SetInteger( p_object->p_libvlc, "saved-volume" , i_volume );
var_SetInteger( p_object, "saved-volume" , i_volume );
/* On Mute */
if ( b_mute_condition )
{
i_volume = AOUT_VOLUME_MIN;
var_SetBool( p_object->p_libvlc, "volume-muted", true );
var_SetBool( p_object, "volume-muted", true );
}
/* Commit volume changes */
......@@ -176,7 +173,7 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps,
}
/* trigger callbacks */
var_TriggerCallback( p_object->p_libvlc, "volume-change");
var_TriggerCallback( p_object, "volume-change" );
if ( p_aout )
{
var_SetBool( p_aout, "intf-change", true );
......@@ -278,7 +275,7 @@ bool aout_IsMuted( vlc_object_t * p_object )
bool b_return_val;
aout_instance_t * p_aout = findAout( p_object );
if ( p_aout ) aout_lock_volume( p_aout );
b_return_val = var_GetBool( p_object->p_libvlc, "volume-muted");
b_return_val = var_GetBool( p_object, "volume-muted");
if ( p_aout )
{
aout_unlock_volume( p_aout );
......
......@@ -546,6 +546,9 @@ libvlc_media_player_new( libvlc_instance_t *instance )
/* Audio */
var_Create (mp, "aout", VLC_VAR_STRING | VLC_VAR_DOINHERIT);
var_Create (mp, "volume-muted", VLC_VAR_BOOL);
var_Create (mp, "saved-volume", VLC_VAR_INTEGER);
var_Create (mp, "volume-change", VLC_VAR_VOID);
var_Create (mp, "find-input-callback", VLC_VAR_ADDRESS);
var_SetAddress (mp, "find-input-callback", find_input);
......
......@@ -836,11 +836,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
/*
* Load background interfaces
*/
/* Create volume callback system. (this variable must be created before
all interfaces as they can use it) */
var_Create( p_libvlc, "volume-change", VLC_VAR_VOID );
var_Create( p_libvlc, "volume-muted", VLC_VAR_BOOL );
psz_modules = var_CreateGetNonEmptyString( p_libvlc, "extraintf" );
psz_control = var_CreateGetNonEmptyString( p_libvlc, "control" );
......
......@@ -323,6 +323,10 @@ static void VariablesInit( playlist_t *p_playlist )
/* Variables to preserve video output parameters */
var_Create( p_playlist, "fullscreen", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
/* Audio output parameters */
var_Create( p_playlist, "volume-muted", VLC_VAR_BOOL );
var_Create( p_playlist, "saved-volume", VLC_VAR_INTEGER );
var_Create( p_playlist, "volume-change", VLC_VAR_VOID );
/* FIXME: horrible hack for audio output interface code */
var_Create( p_playlist, "find-input-callback", VLC_VAR_ADDRESS );
var_SetAddress( p_playlist, "find-input-callback", playlist_FindInput );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment