diff --git a/Libs/PluginFramework/ctkPluginStorageSQL.cpp b/Libs/PluginFramework/ctkPluginStorageSQL.cpp index 5241282d09..f222522008 100644 --- a/Libs/PluginFramework/ctkPluginStorageSQL.cpp +++ b/Libs/PluginFramework/ctkPluginStorageSQL.cpp @@ -73,9 +73,9 @@ ctkPluginStorageSQL::~ctkPluginStorageSQL() //---------------------------------------------------------------------------- QSqlDatabase ctkPluginStorageSQL::getConnection(bool create) const { - if (m_connectionNames.hasLocalData() && QSqlDatabase::contains(m_connectionNames.localData())) + if (!m_connectionNames.isEmpty() && QSqlDatabase::contains(m_connectionNames)) { - return QSqlDatabase::database(m_connectionNames.localData()); + return QSqlDatabase::database(m_connectionNames); } if (!create) @@ -84,22 +84,22 @@ QSqlDatabase ctkPluginStorageSQL::getConnection(bool create) const ctkPluginDatabaseException::DB_NOT_OPEN_ERROR); } - m_connectionNames.setLocalData(getConnectionName()); + m_connectionNames = getConnectionName(); - QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE", m_connectionNames.localData()); + QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE", m_connectionNames); database.setDatabaseName(getDatabasePath()); if (!database.isValid()) { close(); - throw ctkPluginDatabaseException(QString("Invalid database connection: %1").arg(m_connectionNames.localData()), + throw ctkPluginDatabaseException(QString("Invalid database connection: %1").arg(m_connectionNames), ctkPluginDatabaseException::DB_CONNECTION_INVALID); } if (!database.open()) { close(); - throw ctkPluginDatabaseException(QString("Could not open database connection: %1 (%2)").arg(m_connectionNames.localData()).arg(database.lastError().text()), + throw ctkPluginDatabaseException(QString("Could not open database connection: %1 (%2)").arg(m_connectionNames).arg(database.lastError().text()), ctkPluginDatabaseException::DB_SQL_ERROR); } @@ -786,7 +786,7 @@ void ctkPluginStorageSQL::close() const } else { - throw ctkPluginDatabaseException(QString("Problem closing database: Invalid connection %1").arg(m_connectionNames.localData())); + throw ctkPluginDatabaseException(QString("Problem closing database: Invalid connection %1").arg(m_connectionNames)); } } } diff --git a/Libs/PluginFramework/ctkPluginStorageSQL_p.h b/Libs/PluginFramework/ctkPluginStorageSQL_p.h index 900c2a2e4b..ceaf149045 100644 --- a/Libs/PluginFramework/ctkPluginStorageSQL_p.h +++ b/Libs/PluginFramework/ctkPluginStorageSQL_p.h @@ -348,7 +348,7 @@ class ctkPluginStorageSQL : public ctkPluginStorage QString m_databasePath; - mutable QThreadStorage m_connectionNames; + mutable QString m_connectionNames; QMutex m_archivesLock; diff --git a/Libs/PluginFramework/ctkPlugin_p.cpp b/Libs/PluginFramework/ctkPlugin_p.cpp index 95649b3893..fc5be8f4ce 100644 --- a/Libs/PluginFramework/ctkPlugin_p.cpp +++ b/Libs/PluginFramework/ctkPlugin_p.cpp @@ -88,23 +88,12 @@ ctkPluginPrivate::ctkPluginPrivate( QSharedPointer pa) : q_ptr(qq), fwCtx(fw), id(pa->getPluginId()), location(pa->getPluginLocation().toString()), state(ctkPlugin::INSTALLED), - archive(pa), pluginContext(0), pluginActivator(0), pluginLoader(pa->getLibLocation()), + archive(pa), pluginContext(0), pluginActivator(0), resolveFailException(0), eagerActivation(false), wasStarted(false) { //TODO //checkCertificates(pa); - // Get library load hints - if (fw->props.contains(ctkPluginConstants::FRAMEWORK_PLUGIN_LOAD_HINTS)) - { - QVariant loadHintsVariant = fw->props[ctkPluginConstants::FRAMEWORK_PLUGIN_LOAD_HINTS]; - if (loadHintsVariant.isValid()) - { - QLibrary::LoadHints loadHints = loadHintsVariant.value(); - pluginLoader.setLoadHints(loadHints); - } - } - checkManifestHeaders(); pluginDir = fwCtx->getDataStorage(id); @@ -730,6 +719,17 @@ ctkPluginException* ctkPluginPrivate::start0() ctkPluginException::Type error_type = ctkPluginException::MANIFEST_ERROR; try { + pluginLoader.setFileName(archive->getLibLocation()); + // Get library load hints + if (fwCtx->props.contains(ctkPluginConstants::FRAMEWORK_PLUGIN_LOAD_HINTS)) + { + QVariant loadHintsVariant = fwCtx->props[ctkPluginConstants::FRAMEWORK_PLUGIN_LOAD_HINTS]; + if (loadHintsVariant.isValid()) + { + QLibrary::LoadHints loadHints = loadHintsVariant.value(); + pluginLoader.setLoadHints(loadHints); + } + } pluginLoader.load(); if (!pluginLoader.isLoaded()) {