[vlc-devel] commit: Store audio output interface variables into the input manager object ( Rémi Denis-Courmont )

git version control git at videolan.org
Sun Feb 14 16:12:51 CET 2010


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sun Feb 14 17:11:36 2010 +0200| [2932220e9ed7d99f8b8397f1b578c9f0a3a1aa3b] | committer: 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().

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2932220e9ed7d99f8b8397f1b578c9f0a3a1aa3b
---

 modules/control/rc.c               |    4 ++--
 modules/gui/qt4/input_manager.cpp  |    8 ++++----
 modules/gui/skins2/src/vlcproc.cpp |    4 ++--
 src/audio_output/intf.c            |   19 ++++++++-----------
 src/control/media_player.c         |    3 +++
 src/libvlc.c                       |    5 -----
 src/playlist/engine.c              |    4 ++++
 7 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/modules/control/rc.c b/modules/control/rc.c
index 2c6d574..0e2035d 100644
--- a/modules/control/rc.c
+++ b/modules/control/rc.c
@@ -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 );
 }
 
diff --git a/modules/gui/qt4/input_manager.cpp b/modules/gui/qt4/input_manager.cpp
index 670b3c7..85e2bb4 100644
--- a/modules/gui/qt4/input_manager.cpp
+++ b/modules/gui/qt4/input_manager.cpp
@@ -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 );
diff --git a/modules/gui/skins2/src/vlcproc.cpp b/modules/gui/skins2/src/vlcproc.cpp
index 76f2ca7..b0981bb 100644
--- a/modules/gui/skins2/src/vlcproc.cpp
+++ b/modules/gui/skins2/src/vlcproc.cpp
@@ -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 );
diff --git a/src/audio_output/intf.c b/src/audio_output/intf.c
index 3fadb4f..d5e0ba7 100644
--- a/src/audio_output/intf.c
+++ b/src/audio_output/intf.c
@@ -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 );
diff --git a/src/control/media_player.c b/src/control/media_player.c
index 6521712..f28b369 100644
--- a/src/control/media_player.c
+++ b/src/control/media_player.c
@@ -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);
 
diff --git a/src/libvlc.c b/src/libvlc.c
index cbc575e..58f588a 100644
--- a/src/libvlc.c
+++ b/src/libvlc.c
@@ -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" );
 
diff --git a/src/playlist/engine.c b/src/playlist/engine.c
index b0a05ce..0da2997 100644
--- a/src/playlist/engine.c
+++ b/src/playlist/engine.c
@@ -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 );




More information about the vlc-devel mailing list