#include "input_manager.hpp"
#include "dialogs/extensions.hpp"
+#include <vlc_modules.h>
#include "assert.h"
#include <QMenu>
menuMapper = new QSignalMapper( this );
CONNECT( menuMapper, mapped( int ), this, triggerMenu( int ) );
- CONNECT( THEMIM->getIM(), statusChanged( int ), this, playingChanged( int ) );
+ CONNECT( THEMIM->getIM(), playingStatusChanged( int ), this, playingChanged( int ) );
DCONNECT( THEMIM, inputChanged( input_thread_t* ),
this, inputChanged( input_thread_t* ) );
+ CONNECT( THEMIM->getIM(), metaChanged( input_item_t* ),
+ this, metaChanged( input_item_t* ) );
b_unloading = false;
b_failed = false;
}
emit extensionsUpdated();
return false;
}
- vlc_object_attach( p_extensions_manager, p_intf );
p_extensions_manager->p_module =
module_need( p_extensions_manager, "extension", NULL, false );
if( !p_extensions_manager )
return;
b_unloading = true;
+ ExtensionsDialogProvider::killInstance();
module_unneed( p_extensions_manager, p_extensions_manager->p_module );
vlc_object_release( p_extensions_manager );
p_extensions_manager = NULL;
- emit extensionsUpdated();
- ExtensionsDialogProvider::killInstance();
}
void ExtensionsManager::reloadExtensions()
menuMapper->setMapping( action,
MENU_MAP( pi_ids[i], i_ext ) );
CONNECT( action, triggered(), menuMapper, map() );
+ free( ppsz_titles[i] );
}
if( !i_num )
{
action = submenu->addAction( qtr( "Empty" ) );
action->setEnabled( false );
}
+ free( ppsz_titles );
+ free( pi_ids );
}
else
{
vlc_mutex_unlock( &p_extensions_manager->lock );
}
+
+void ExtensionsManager::metaChanged( input_item_t* )
+{
+ //This is unlikely, but can happen if no extension modules can be loaded.
+ if ( p_extensions_manager == NULL )
+ return ;
+ 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_MetaChanged( p_extensions_manager, p_ext );
+ }
+ }
+ FOREACH_END()
+ vlc_mutex_unlock( &p_extensions_manager->lock );
+}