]>
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());
31 QMutexLocker
pluginLocker(m_globalPluginMutex
);
32 QMap
<QString
, QVector
<VersionControlObserver::ItemState
>>::iterator it
= m_itemStates
.begin();
33 for (; it
!= m_itemStates
.end(); ++it
) {
34 if (m_plugin
->beginRetrieval(it
.key())) {
35 QVector
<VersionControlObserver::ItemState
> &items
= it
.value();
36 const int count
= items
.count();
37 for (int i
= 0; i
< count
; ++i
) {
38 const KFileItem
&item
= items
.at(i
).first
;
39 const KVersionControlPlugin::ItemVersion version
= m_plugin
->itemVersion(item
);
40 items
[i
].second
= version
;
44 m_plugin
->endRetrieval();
48 QMap
<QString
, QVector
<VersionControlObserver::ItemState
>> UpdateItemStatesThread::itemStates() const
53 #include "moc_updateitemstatesthread.cpp"