diff --git a/src/libtomahawk/network/controlconnection.cpp b/src/libtomahawk/network/controlconnection.cpp index d75395fbd..373129e75 100644 --- a/src/libtomahawk/network/controlconnection.cpp +++ b/src/libtomahawk/network/controlconnection.cpp @@ -123,7 +123,7 @@ ControlConnection::registerSource() void ControlConnection::setupDbSyncConnection( bool ondemand ) { - qDebug() << Q_FUNC_INFO << ondemand << m_source->id() << ondemand << m_dbconnkey << m_dbsyncconn << m_registered; + qDebug() << Q_FUNC_INFO << ondemand << m_source->id() << m_dbconnkey << m_dbsyncconn << m_registered; if ( m_dbsyncconn || !m_registered ) return; diff --git a/src/sip/SipHandler.cpp b/src/sip/SipHandler.cpp index 237d9ca78..3b3327082 100644 --- a/src/sip/SipHandler.cpp +++ b/src/sip/SipHandler.cpp @@ -31,6 +31,7 @@ #include "config.h" + SipHandler::SipHandler( QObject* parent ) : QObject( parent ) , m_connected( false ) @@ -80,11 +81,11 @@ SipHandler::findPlugins() #endif QDir libDir( CMAKE_INSTALL_PREFIX "/lib" ); - + QDir lib64Dir( appDir ); lib64Dir.cdUp(); lib64Dir.cd( "lib64" ); - + pluginDirs << appDir << libDir << lib64Dir << QDir( qApp->applicationDirPath() ); foreach ( const QDir& pluginDir, pluginDirs ) { @@ -113,29 +114,31 @@ SipHandler::loadPlugins( const QStringList& paths ) continue; qDebug() << "Trying to load plugin:" << fileName; - - QPluginLoader loader( fileName ); - QObject* plugin = loader.instance(); - if ( plugin ) - { - // Connect via that plugin - qDebug() << "Loaded plugin:" << loader.fileName(); - loadPlugin( plugin ); - } - else - { - qDebug() << "Error loading library:" << loader.errorString(); - } + loadPlugin( fileName ); } } void -SipHandler::loadPlugin( QObject* plugin ) +SipHandler::loadPlugin( const QString& path ) { + QPluginLoader loader( path ); + QObject* plugin = loader.instance(); + if ( !plugin ) + { + qDebug() << "Error loading plugin:" << loader.errorString(); + } + SipPlugin* sip = qobject_cast(plugin); if ( sip ) { + if ( pluginLoaded( sip->name() ) ) + { + qDebug() << "Plugin" << sip->name() << "already loaded! Not loading:" << loader.fileName(); + return; + } + qDebug() << "Loaded plugin:" << loader.fileName(); + QObject::connect( sip, SIGNAL( peerOnline( QString ) ), SLOT( onPeerOnline( QString ) ) ); QObject::connect( sip, SIGNAL( peerOffline( QString ) ), SLOT( onPeerOffline( QString ) ) ); QObject::connect( sip, SIGNAL( msgReceived( QString, QString ) ), SLOT( onMessage( QString, QString ) ) ); @@ -149,6 +152,19 @@ SipHandler::loadPlugin( QObject* plugin ) } +bool +SipHandler::pluginLoaded( const QString& name ) const +{ + foreach( SipPlugin* plugin, m_plugins ) + { + if ( plugin->name() == name ) + return true; + } + + return false; +} + + void SipHandler::connectPlugins( bool startup, const QString &pluginName ) { diff --git a/src/sip/SipHandler.h b/src/sip/SipHandler.h index 4f1d395c6..f127dcc16 100644 --- a/src/sip/SipHandler.h +++ b/src/sip/SipHandler.h @@ -58,8 +58,10 @@ private slots: private: QStringList findPlugins(); + bool pluginLoaded( const QString& name ) const; + void loadPlugins( const QStringList& paths ); - void loadPlugin( QObject* plugin ); + void loadPlugin( const QString& path ); QList< SipPlugin* > m_plugins; bool m_connected; diff --git a/src/sip/twitter/twitter.cpp b/src/sip/twitter/twitter.cpp index 3058f1714..3588802b7 100644 --- a/src/sip/twitter/twitter.cpp +++ b/src/sip/twitter/twitter.cpp @@ -70,7 +70,6 @@ TwitterPlugin::isValid() const QString TwitterPlugin::name() { - qDebug() << "TwitterPlugin returning plugin name " << QString( MYNAME ); return QString( MYNAME ); }