]> git.sesse.net Git - vlc/commitdiff
Extensions/Qt: listen to input-change events
authorJean-Philippe André <jpeg@videolan.org>
Fri, 29 Jan 2010 11:23:59 +0000 (12:23 +0100)
committerJean-Philippe André <jpeg@videolan.org>
Wed, 3 Feb 2010 16:13:58 +0000 (17:13 +0100)
Forward messages to the extensions manager

modules/gui/qt4/extensions_manager.cpp
modules/gui/qt4/extensions_manager.hpp

index a460f5523a0ea67297363724687c30212d9a1384..c30c507e5f7274d90419e8506c55b106a7329a7a 100644 (file)
@@ -22,6 +22,7 @@
  *****************************************************************************/
 
 #include "extensions_manager.hpp"
+#include "input_manager.hpp"
 #include "dialogs/extensions.hpp"
 
 #include "assert.h"
@@ -46,6 +47,8 @@ ExtensionsManager::ExtensionsManager( intf_thread_t *_p_intf, QObject *parent )
 
     menuMapper = new QSignalMapper( this );
     CONNECT( menuMapper, mapped( int ), this, triggerMenu( int ) );
+    CONNECT( THEMIM, inputChanged( input_thread_t* ),
+             this, inputChanged( input_thread_t* ) );
     b_unloading = false;
     b_failed = false;
 }
@@ -243,3 +246,24 @@ void ExtensionsManager::triggerMenu( int id )
         extension_TriggerMenu( p_extensions_manager, p_ext, i_action );
     }
 }
+
+void ExtensionsManager::inputChanged( input_thread_t* p_input )
+{
+    if( p_input )
+        vlc_object_hold( p_input );
+    vlc_mutex_lock( &p_extensions_manager->lock );
+
+    extension_t *p_ext;
+    FOREACH_ARRAY( p_ext, p_extensions_manager->extensions )
+    {
+        if( extension_IsActivated( p_extensions_manager, p_ext ) )
+        {
+            extension_SetInput( p_extensions_manager, p_ext, p_input );
+        }
+    }
+    FOREACH_END()
+
+    vlc_mutex_unlock( &p_extensions_manager->lock );
+    if( p_input )
+        vlc_object_release( p_input );
+}
index 1edfce599abde9753bb8a3b711cfb197861e21b7..fd9b9d83cf217ae8003d0b14d76346d67c83d2d2 100644 (file)
@@ -78,6 +78,7 @@ public slots:
 
 private slots:
     void triggerMenu( int id );
+    void inputChanged( input_thread_t *p_input );
 
 private:
     static ExtensionsManager* instance;