make sure that plugin is not loaded multiple times, fixes #1427
This commit is contained in:
parent
02f64e247b
commit
c0901acd8e
1 changed files with 12 additions and 3 deletions
|
@ -14,6 +14,7 @@ PluginFactory::PluginFactory() {}
|
||||||
|
|
||||||
QList<ServiceEntryPoint*> PluginFactory::loadPlugins() const {
|
QList<ServiceEntryPoint*> PluginFactory::loadPlugins() const {
|
||||||
QList<ServiceEntryPoint*> plugins;
|
QList<ServiceEntryPoint*> plugins;
|
||||||
|
QStringList plugin_ids;
|
||||||
|
|
||||||
const QString plugin_name_wildcard = pluginNameWildCard();
|
const QString plugin_name_wildcard = pluginNameWildCard();
|
||||||
const auto plugins_paths = pluginPaths();
|
const auto plugins_paths = pluginPaths();
|
||||||
|
@ -48,14 +49,21 @@ QList<ServiceEntryPoint*> PluginFactory::loadPlugins() const {
|
||||||
qCriticalNN << LOGSEC_CORE << "The plugin" << QUOTE_W_SPACE(plugin_file.absoluteFilePath())
|
qCriticalNN << LOGSEC_CORE << "The plugin" << QUOTE_W_SPACE(plugin_file.absoluteFilePath())
|
||||||
<< "was not loaded successfully:" << QUOTE_W_SPACE_DOT(loader.errorString());
|
<< "was not loaded successfully:" << QUOTE_W_SPACE_DOT(loader.errorString());
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
if (plugin_ids.contains(plugin_instance->code())) {
|
||||||
|
qCriticalNN << LOGSEC_CORE << "Plugin" << QUOTE_W_SPACE(plugin_instance->code())
|
||||||
|
<< "was already loaded before. Skipping now.";
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
qDebugNN << LOGSEC_CORE << "Plugin" << QUOTE_W_SPACE(plugin_file.absoluteFilePath()) << "loaded.";
|
qDebugNN << LOGSEC_CORE << "Plugin" << QUOTE_W_SPACE(plugin_file.absoluteFilePath()) << "loaded.";
|
||||||
|
|
||||||
plugin_instance->setIsDynamicallyLoaded(true);
|
plugin_instance->setIsDynamicallyLoaded(true);
|
||||||
|
plugin_ids.append(plugin_instance->code());
|
||||||
plugins.append(plugin_instance);
|
plugins.append(plugin_instance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QDir::setCurrent(backup_current_dir);
|
QDir::setCurrent(backup_current_dir);
|
||||||
|
|
||||||
|
@ -64,6 +72,7 @@ QList<ServiceEntryPoint*> PluginFactory::loadPlugins() const {
|
||||||
|
|
||||||
QStringList PluginFactory::pluginPaths() const {
|
QStringList PluginFactory::pluginPaths() const {
|
||||||
QStringList paths;
|
QStringList paths;
|
||||||
|
|
||||||
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
|
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
|
||||||
paths << QCoreApplication::applicationDirPath() + QDir::separator() + QL1S("..") + QDir::separator() +
|
paths << QCoreApplication::applicationDirPath() + QDir::separator() + QL1S("..") + QDir::separator() +
|
||||||
QL1S(RSSGUARD_LIBDIR) + QDir::separator() + QL1S(APP_LOW_NAME);
|
QL1S(RSSGUARD_LIBDIR) + QDir::separator() + QL1S(APP_LOW_NAME);
|
||||||
|
|
Loading…
Add table
Reference in a new issue