]>
cloud.milkyroute.net Git - dolphin.git/blob - src/views/versioncontrol/updateitemstatesthread.cpp
2 * SPDX-FileCopyrightText: 2009 Peter Penz <peter.penz19@gmail.com>
4 * SPDX-License-Identifier: GPL-2.0-or-later
7 #include "updateitemstatesthread.h"
9 UpdateItemStatesThread::UpdateItemStatesThread(KVersionControlPlugin
*plugin
, const QMap
<QString
, QVector
<VersionControlObserver::ItemState
>> &itemStates
)
11 , m_globalPluginMutex(nullptr)
13 , m_itemStates(itemStates
)
15 // Several threads may share one instance of a plugin. A global
16 // mutex is required to serialize the retrieval of version control
17 // states inside run().
18 static QMutex globalMutex
;
19 m_globalPluginMutex
= &globalMutex
;
22 UpdateItemStatesThread::~UpdateItemStatesThread()
26 void UpdateItemStatesThread::run()
28 Q_ASSERT(!m_itemStates
.isEmpty());
30 QMutexLocker
pluginLocker(m_globalPluginMutex
);
31 QMap
<QString
, QVector
<VersionControlObserver::ItemState
>>::iterator it
= m_itemStates
.begin();
32 for (; it
!= m_itemStates
.end() && !isInterruptionRequested(); ++it
) {
33 if (m_plugin
->beginRetrieval(it
.key())) {
34 QVector
<VersionControlObserver::ItemState
> &items
= it
.value();
35 const int count
= items
.count();
36 for (int i
= 0; i
< count
&& !isInterruptionRequested(); ++i
) {
37 const KFileItem
&item
= items
.at(i
).first
;
38 const KVersionControlPlugin::ItemVersion version
= m_plugin
->itemVersion(item
);
39 items
[i
].second
= version
;
43 m_plugin
->endRetrieval();
47 QMap
<QString
, QVector
<VersionControlObserver::ItemState
>> UpdateItemStatesThread::itemStates() const
52 #include "moc_updateitemstatesthread.cpp"