]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/versioncontrol/updateitemstatesthread.cpp
Add comment to explain KColorSchemeManager
[dolphin.git] / src / views / versioncontrol / updateitemstatesthread.cpp
index cf45bbff16325354045abd3702be0440ff741335..e6a0f68fa192d1de9bb156467eef0cf8b7f15ab3 100644 (file)
@@ -6,13 +6,11 @@
 
 #include "updateitemstatesthread.h"
 
-
-UpdateItemStatesThread::UpdateItemStatesThread(KVersionControlPlugin* plugin,
-                                               const QMap<QString, QVector<VersionControlObserver::ItemState> >& itemStates) :
-    QThread(),
-    m_globalPluginMutex(nullptr),
-    m_plugin(plugin),
-    m_itemStates(itemStates)
+UpdateItemStatesThread::UpdateItemStatesThread(KVersionControlPlugin *plugin, const QMap<QString, QVector<VersionControlObserver::ItemState>> &itemStates)
+    : QThread()
+    , m_globalPluginMutex(nullptr)
+    , m_plugin(plugin)
+    , m_itemStates(itemStates)
 {
     // Several threads may share one instance of a plugin. A global
     // mutex is required to serialize the retrieval of version control
@@ -28,27 +26,32 @@ UpdateItemStatesThread::~UpdateItemStatesThread()
 void UpdateItemStatesThread::run()
 {
     Q_ASSERT(!m_itemStates.isEmpty());
-    Q_ASSERT(m_plugin);
+    if (!m_plugin) {
+        return;
+    }
 
     QMutexLocker pluginLocker(m_globalPluginMutex);
-    QMap<QString, QVector<VersionControlObserver::ItemState> >::iterator it = m_itemStates.begin();
-    for (; it != m_itemStates.end(); ++it) {
+    QMap<QString, QVector<VersionControlObserver::ItemState>>::iterator it = m_itemStates.begin();
+    for (; it != m_itemStates.end() && m_plugin; ++it) {
         if (m_plugin->beginRetrieval(it.key())) {
-            QVector<VersionControlObserver::ItemState>items = it.value();
+            QVector<VersionControlObserver::ItemState> &items = it.value();
             const int count = items.count();
-            for (int i = 0; i < count; ++i) {
-                const KFileItemitem = items.at(i).first;
+            for (int i = 0; i < count && m_plugin; ++i) {
+                const KFileItem &item = items.at(i).first;
                 const KVersionControlPlugin::ItemVersion version = m_plugin->itemVersion(item);
                 items[i].second = version;
             }
         }
 
-        m_plugin->endRetrieval();
+        if (m_plugin) {
+            m_plugin->endRetrieval();
+        }
     }
 }
 
-QMap<QString, QVector<VersionControlObserver::ItemState> > UpdateItemStatesThread::itemStates() const
+QMap<QString, QVector<VersionControlObserver::ItemState>> UpdateItemStatesThread::itemStates() const
 {
     return m_itemStates;
 }
 
+#include "moc_updateitemstatesthread.cpp"