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 ) ...@@ -458,7 +458,7 @@ static void Run( intf_thread_t *p_intf )
/* status callbacks */ /* status callbacks */
/* Listen to audio volume updates */ /* 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 #ifdef WIN32
/* Get the file descriptor of the console input */ /* Get the file descriptor of the console input */
...@@ -789,7 +789,7 @@ static void Run( intf_thread_t *p_intf ) ...@@ -789,7 +789,7 @@ static void Run( intf_thread_t *p_intf )
vlc_object_release( p_input ); 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 ); vlc_restorecancel( canc );
} }
......
...@@ -913,8 +913,8 @@ MainInputManager::MainInputManager( intf_thread_t *_p_intf ) ...@@ -913,8 +913,8 @@ MainInputManager::MainInputManager( intf_thread_t *_p_intf )
var_AddCallback( THEPL, "repeat", RepeatChanged, this ); var_AddCallback( THEPL, "repeat", RepeatChanged, this );
var_AddCallback( THEPL, "loop", LoopChanged, this ); var_AddCallback( THEPL, "loop", LoopChanged, this );
var_AddCallback( p_intf->p_libvlc, "volume-change", VolumeChanged, this ); var_AddCallback( THEPL, "volume-change", VolumeChanged, this );
var_AddCallback( p_intf->p_libvlc, "volume-muted", SoundMuteChanged, this ); var_AddCallback( THEPL, "volume-muted", SoundMuteChanged, this );
/* Warn our embedded IM about input changes */ /* Warn our embedded IM about input changes */
CONNECT( this, inputChanged( input_thread_t * ), CONNECT( this, inputChanged( input_thread_t * ),
...@@ -944,8 +944,8 @@ MainInputManager::~MainInputManager() ...@@ -944,8 +944,8 @@ MainInputManager::~MainInputManager()
vlc_object_release( p_input ); vlc_object_release( p_input );
} }
var_DelCallback( p_intf->p_libvlc, "volume-change", VolumeChanged, this ); var_DelCallback( THEPL, "volume-change", VolumeChanged, this );
var_DelCallback( p_intf->p_libvlc, "volume-muted", SoundMuteChanged, this ); var_DelCallback( THEPL, "volume-muted", SoundMuteChanged, this );
var_DelCallback( THEPL, "activity", PLItemChanged, this ); var_DelCallback( THEPL, "activity", PLItemChanged, this );
var_DelCallback( THEPL, "item-change", ItemChanged, im ); var_DelCallback( THEPL, "item-change", ItemChanged, im );
......
...@@ -146,7 +146,7 @@ VlcProc::VlcProc( intf_thread_t *pIntf ): SkinObject( pIntf ), ...@@ -146,7 +146,7 @@ VlcProc::VlcProc( intf_thread_t *pIntf ): SkinObject( pIntf ),
#define ADD_CALLBACK( p_object, var ) \ #define ADD_CALLBACK( p_object, var ) \
var_AddCallback( p_object, var, onGenericCallback, this ); 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_libvlc, "intf-show" )
ADD_CALLBACK( pIntf->p_sys->p_playlist, "item-current" ) ADD_CALLBACK( pIntf->p_sys->p_playlist, "item-current" )
...@@ -200,7 +200,7 @@ VlcProc::~VlcProc() ...@@ -200,7 +200,7 @@ VlcProc::~VlcProc()
interaction_Unregister( getIntf() ); interaction_Unregister( getIntf() );
var_DelCallback( getIntf()->p_libvlc, "volume-change", var_DelCallback( getIntf()->p_sys->p_playlist, "volume-change",
onGenericCallback, this ); onGenericCallback, this );
var_DelCallback( getIntf()->p_libvlc, "intf-show", var_DelCallback( getIntf()->p_libvlc, "intf-show",
onGenericCallback, this ); onGenericCallback, this );
......
...@@ -104,7 +104,7 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps, ...@@ -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 ); 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 */ const bool b_unmute_condition = ( /* Also unmute on increments */
( action == INCREMENT_VOLUME ) ( action == INCREMENT_VOLUME )
...@@ -124,10 +124,8 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps, ...@@ -124,10 +124,8 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps,
if ( b_unmute_condition ) if ( b_unmute_condition )
{ {
/* Restore saved volume */ /* Restore saved volume */
var_Create( p_object->p_libvlc, "saved-volume", VLC_VAR_INTEGER ); i_volume = var_GetInteger( p_object, "saved-volume" );
i_volume = (audio_volume_t)var_GetInteger( p_object->p_libvlc, var_SetBool( p_object, "volume-muted", false );
"saved-volume" );
var_SetBool( p_object->p_libvlc, "volume-muted", false );
} }
else if ( b_mute_condition ) else if ( b_mute_condition )
{ {
...@@ -137,7 +135,7 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps, ...@@ -137,7 +135,7 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps,
if ( action == INCREMENT_VOLUME ) 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 ) if ( !b_unmute_condition )
i_volume = config_GetInt( p_object, "volume" ); i_volume = config_GetInt( p_object, "volume" );
...@@ -152,14 +150,13 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps, ...@@ -152,14 +150,13 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps,
i_volume = i_new_volume; i_volume = i_new_volume;
} }
var_Create( p_object->p_libvlc, "saved-volume", VLC_VAR_INTEGER ); var_SetInteger( p_object, "saved-volume" , i_volume );
var_SetInteger( p_object->p_libvlc, "saved-volume" , i_volume );
/* On Mute */ /* On Mute */
if ( b_mute_condition ) if ( b_mute_condition )
{ {
i_volume = AOUT_VOLUME_MIN; i_volume = AOUT_VOLUME_MIN;
var_SetBool( p_object->p_libvlc, "volume-muted", true ); var_SetBool( p_object, "volume-muted", true );
} }
/* Commit volume changes */ /* Commit volume changes */
...@@ -176,7 +173,7 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps, ...@@ -176,7 +173,7 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps,
} }
/* trigger callbacks */ /* trigger callbacks */
var_TriggerCallback( p_object->p_libvlc, "volume-change"); var_TriggerCallback( p_object, "volume-change" );
if ( p_aout ) if ( p_aout )
{ {
var_SetBool( p_aout, "intf-change", true ); var_SetBool( p_aout, "intf-change", true );
...@@ -278,7 +275,7 @@ bool aout_IsMuted( vlc_object_t * p_object ) ...@@ -278,7 +275,7 @@ bool aout_IsMuted( vlc_object_t * p_object )
bool b_return_val; bool b_return_val;
aout_instance_t * p_aout = findAout( p_object ); aout_instance_t * p_aout = findAout( p_object );
if ( p_aout ) aout_lock_volume( p_aout ); 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 ) if ( p_aout )
{ {
aout_unlock_volume( p_aout ); aout_unlock_volume( p_aout );
......
...@@ -546,6 +546,9 @@ libvlc_media_player_new( libvlc_instance_t *instance ) ...@@ -546,6 +546,9 @@ libvlc_media_player_new( libvlc_instance_t *instance )
/* Audio */ /* Audio */
var_Create (mp, "aout", VLC_VAR_STRING | VLC_VAR_DOINHERIT); 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_Create (mp, "find-input-callback", VLC_VAR_ADDRESS);
var_SetAddress (mp, "find-input-callback", find_input); var_SetAddress (mp, "find-input-callback", find_input);
......
...@@ -836,11 +836,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, ...@@ -836,11 +836,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
/* /*
* Load background interfaces * 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_modules = var_CreateGetNonEmptyString( p_libvlc, "extraintf" );
psz_control = var_CreateGetNonEmptyString( p_libvlc, "control" ); psz_control = var_CreateGetNonEmptyString( p_libvlc, "control" );
......
...@@ -323,6 +323,10 @@ static void VariablesInit( playlist_t *p_playlist ) ...@@ -323,6 +323,10 @@ static void VariablesInit( playlist_t *p_playlist )
/* Variables to preserve video output parameters */ /* Variables to preserve video output parameters */
var_Create( p_playlist, "fullscreen", VLC_VAR_BOOL | VLC_VAR_DOINHERIT ); 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 */ /* FIXME: horrible hack for audio output interface code */
var_Create( p_playlist, "find-input-callback", VLC_VAR_ADDRESS ); var_Create( p_playlist, "find-input-callback", VLC_VAR_ADDRESS );
var_SetAddress( p_playlist, "find-input-callback", playlist_FindInput ); 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