From 0d77cefc13700fedc53d5bf908f7ddc5745140fb Mon Sep 17 00:00:00 2001 From: Lukas W Date: Thu, 23 Mar 2017 21:12:04 +0100 Subject: [PATCH] PluginFactory: Avoid duplicate plugins --- src/core/PluginFactory.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/core/PluginFactory.cpp b/src/core/PluginFactory.cpp index f147508f8..cfbca8a7c 100644 --- a/src/core/PluginFactory.cpp +++ b/src/core/PluginFactory.cpp @@ -37,6 +37,11 @@ QStringList nameFilters("lib*.so"); #endif +qint64 qHash(const QFileInfo& fi) +{ + return qHash(fi.absoluteFilePath()); +} + PluginFactory* PluginFactory::s_instance = nullptr; PluginFactory::PluginFactory() @@ -77,7 +82,6 @@ PluginFactory::PluginFactory() PluginFactory::~PluginFactory() { - } PluginFactory* PluginFactory::instance() @@ -131,10 +135,10 @@ void PluginFactory::discoverPlugins() PluginInfoList pluginInfos; m_pluginByExt.clear(); - QFileInfoList files; + QSet files; for (const QString& searchPath : QDir::searchPaths("plugins")) { - files << QDir(searchPath).entryInfoList(nameFilters); + files.unite(QDir(searchPath).entryInfoList(nameFilters).toSet()); } // Cheap dependency handling: zynaddsubfx needs ZynAddSubFxCore. By loading