make sure that plugin is not loaded multiple times, fixes #1427
This commit is contained in:
parent
02f64e247b
commit
c0901acd8e
@ -14,6 +14,7 @@ PluginFactory::PluginFactory() {}
|
||||
|
||||
QList<ServiceEntryPoint*> PluginFactory::loadPlugins() const {
|
||||
QList<ServiceEntryPoint*> plugins;
|
||||
QStringList plugin_ids;
|
||||
|
||||
const QString plugin_name_wildcard = pluginNameWildCard();
|
||||
const auto plugins_paths = pluginPaths();
|
||||
@ -49,10 +50,17 @@ QList<ServiceEntryPoint*> PluginFactory::loadPlugins() const {
|
||||
<< "was not loaded successfully:" << QUOTE_W_SPACE_DOT(loader.errorString());
|
||||
}
|
||||
else {
|
||||
qDebugNN << LOGSEC_CORE << "Plugin" << QUOTE_W_SPACE(plugin_file.absoluteFilePath()) << "loaded.";
|
||||
if (plugin_ids.contains(plugin_instance->code())) {
|
||||
qCriticalNN << LOGSEC_CORE << "Plugin" << QUOTE_W_SPACE(plugin_instance->code())
|
||||
<< "was already loaded before. Skipping now.";
|
||||
}
|
||||
else {
|
||||
qDebugNN << LOGSEC_CORE << "Plugin" << QUOTE_W_SPACE(plugin_file.absoluteFilePath()) << "loaded.";
|
||||
|
||||
plugin_instance->setIsDynamicallyLoaded(true);
|
||||
plugins.append(plugin_instance);
|
||||
plugin_instance->setIsDynamicallyLoaded(true);
|
||||
plugin_ids.append(plugin_instance->code());
|
||||
plugins.append(plugin_instance);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -64,6 +72,7 @@ QList<ServiceEntryPoint*> PluginFactory::loadPlugins() const {
|
||||
|
||||
QStringList PluginFactory::pluginPaths() const {
|
||||
QStringList paths;
|
||||
|
||||
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
|
||||
paths << QCoreApplication::applicationDirPath() + QDir::separator() + QL1S("..") + QDir::separator() +
|
||||
QL1S(RSSGUARD_LIBDIR) + QDir::separator() + QL1S(APP_LOW_NAME);
|
||||
|
Loading…
x
Reference in New Issue
Block a user