┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views/versioncontrol/versioncontrolobserver.cpp
diff options
context:
space:
mode:
authorAnthony Fieroni <[email protected]>2019-01-29 20:28:07 +0200
committerAnthony Fieroni <[email protected]>2019-01-29 20:28:07 +0200
commit9a9fbae988147c5651ce9e2bd2b412d32c1bf01d (patch)
tree26b2f039a8d974ff3e774fe71eb844d417e98815 /src/views/versioncontrol/versioncontrolobserver.cpp
parentdf3c2c1391a59a4d7d55365c6259f786e81ae642 (diff)
[versioncontrolobserver] Do not use static plugin objects
Differential Revision: https://phabricator.kde.org/D17640 Signed-off-by: Anthony Fieroni <[email protected]>
Diffstat (limited to 'src/views/versioncontrol/versioncontrolobserver.cpp')
-rw-r--r--src/views/versioncontrol/versioncontrolobserver.cpp31
1 files changed, 13 insertions, 18 deletions
diff --git a/src/views/versioncontrol/versioncontrolobserver.cpp b/src/views/versioncontrol/versioncontrolobserver.cpp
index 7295a245a..d2e1ecd13 100644
--- a/src/views/versioncontrol/versioncontrolobserver.cpp
+++ b/src/views/versioncontrol/versioncontrolobserver.cpp
@@ -37,6 +37,7 @@ VersionControlObserver::VersionControlObserver(QObject* parent) :
m_silentUpdate(false),
m_model(nullptr),
m_dirVerificationTimer(nullptr),
+ m_pluginsInitialized(false),
m_plugin(nullptr),
m_updateItemStatesThread(nullptr)
{
@@ -256,18 +257,9 @@ int VersionControlObserver::createItemStatesList(QMap<QString, QVector<ItemState
return index - firstIndex; // number of processed items
}
-KVersionControlPlugin* VersionControlObserver::searchPlugin(const QUrl& directory) const
+KVersionControlPlugin* VersionControlObserver::searchPlugin(const QUrl& directory)
{
- static bool pluginsAvailable = true;
- static QList<KVersionControlPlugin*> plugins;
-
- if (!pluginsAvailable) {
- // A searching for plugins has already been done, but no
- // plugins are installed
- return nullptr;
- }
-
- if (plugins.isEmpty()) {
+ if (!m_pluginsInitialized) {
// No searching for plugins has been done yet. Query the KServiceTypeTrader for
// all fileview version control plugins and remember them in 'plugins'.
const QStringList enabledPlugins = VersionControlSettings::enabledPlugins();
@@ -275,16 +267,19 @@ KVersionControlPlugin* VersionControlObserver::searchPlugin(const QUrl& director
const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("FileViewVersionControlPlugin"));
for (KService::List::ConstIterator it = pluginServices.constBegin(); it != pluginServices.constEnd(); ++it) {
if (enabledPlugins.contains((*it)->name())) {
- KVersionControlPlugin* plugin = (*it)->createInstance<KVersionControlPlugin>();
+ KVersionControlPlugin* plugin = (*it)->createInstance<KVersionControlPlugin>(this);
if (plugin) {
- plugins.append(plugin);
+ m_plugins.append(plugin);
}
}
}
- if (plugins.isEmpty()) {
- pluginsAvailable = false;
- return nullptr;
- }
+ m_pluginsInitialized = true;
+ }
+
+ if (m_plugins.empty()) {
+ // A searching for plugins has already been done, but no
+ // plugins are installed
+ return nullptr;
}
// We use the number of upUrl() calls to find the best matching plugin
@@ -294,7 +289,7 @@ KVersionControlPlugin* VersionControlObserver::searchPlugin(const QUrl& director
// Verify whether the current directory contains revision information
// like .svn, .git, ...
- foreach (KVersionControlPlugin* plugin, plugins) {
+ foreach (KVersionControlPlugin* plugin, m_plugins) {
const QString fileName = directory.path() + '/' + plugin->fileName();
if (QFile::exists(fileName)) {
// The score of this plugin is 0 (best), so we can just return this plugin,