]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/input_manager.cpp
Qt: Audio control widget changes
[vlc] / modules / gui / qt4 / input_manager.cpp
index 2317e0c49c69f95a55104e69dd44b034163ef7a2..919f154a0c91b31b7045b1b9a620ca469b664db2 100644 (file)
@@ -45,6 +45,8 @@ static int PLItemRemoved( vlc_object_t *, const char *,
                         vlc_value_t, vlc_value_t, void * );
 static int VolumeChanged( vlc_object_t *, const char *,
                         vlc_value_t, vlc_value_t, void * );
+static int SoundMuteChanged( vlc_object_t *, const char *,
+                        vlc_value_t, vlc_value_t, void * );
 
 static int RandomChanged( vlc_object_t *, const char *,
                         vlc_value_t, vlc_value_t, void * );
@@ -901,6 +903,7 @@ MainInputManager::MainInputManager( intf_thread_t *_p_intf )
     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 );
 
     /* Warn our embedded IM about input changes */
     CONNECT( this, inputChanged( input_thread_t * ),
@@ -931,6 +934,7 @@ MainInputManager::~MainInputManager()
     }
 
     var_DelCallback( p_intf->p_libvlc, "volume-change", VolumeChanged, this );
+    var_DelCallback( p_intf->p_libvlc, "volume-muted", SoundMuteChanged, this );
 
     var_DelCallback( THEPL, "activity", PLItemChanged, this );
     var_DelCallback( THEPL, "item-change", ItemChanged, im );
@@ -966,6 +970,9 @@ void MainInputManager::customEvent( QEvent *event )
     case VolumeChanged_Type:
         emit volumeChanged();
         return;
+    case SoundMuteChanged_Type:
+        emit soundMuteChanged();
+        return;
     case PLItemAppended_Type:
         plEv = static_cast<PLEvent*>( event );
         emit playlistItemAppended( plEv->i_item, plEv->i_parent );
@@ -1107,6 +1114,16 @@ static int VolumeChanged( vlc_object_t *p_this, const char *psz_var,
     return VLC_SUCCESS;
 }
 
+static int SoundMuteChanged( vlc_object_t *p_this, const char *psz_var,
+                        vlc_value_t oldval, vlc_value_t newval, void *param )
+{
+    MainInputManager *mim = (MainInputManager*)param;
+
+    IMEvent *event = new IMEvent( SoundMuteChanged_Type );
+    QApplication::postEvent( mim, event );
+    return VLC_SUCCESS;
+}
+
 static int PLItemAppended
 ( vlc_object_t * obj, const char *var, vlc_value_t old, vlc_value_t cur, void *data )
 {