diff options
author | Orgad Shaneh <[email protected]> | 2012-11-12 16:48:26 +0200 |
---|---|---|
committer | Orgad Shaneh <[email protected]> | 2012-11-16 14:13:14 +0100 |
commit | 3f44c6d0becc704538523a84593efb4e1719c84c (patch) | |
tree | bbd36e459112e580bff180442de47dd7d18a3d34 /src/plugins/clearcase/clearcaseplugin.cpp | |
parent | 691ade174771141b6c5efb0d7f2e983826c6670c (diff) |
ClearCase: Fix race condition
setStatus() is invoked in the main thread, but the
status change is tested for in the sync thread...
Change-Id: Ib322e12e7d40dafa6b60f3a73a202e8e1dcbfb53
Reviewed-by: Tobias Hunger <[email protected]>
Diffstat (limited to 'src/plugins/clearcase/clearcaseplugin.cpp')
-rw-r--r-- | src/plugins/clearcase/clearcaseplugin.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp index 99ce042a5e8..b37aa68be07 100644 --- a/src/plugins/clearcase/clearcaseplugin.cpp +++ b/src/plugins/clearcase/clearcaseplugin.cpp @@ -81,6 +81,7 @@ #include <QMainWindow> #include <QMenu> #include <QMessageBox> +#include <QMetaObject> #include <QMutex> #include <QProcess> #include <QRegExp> @@ -88,7 +89,6 @@ #include <QtConcurrentRun> #include <QTemporaryFile> #include <QTextCodec> -#include <QTimer> #include <QtPlugin> #include <QUrl> #include <QUuid> @@ -642,11 +642,11 @@ void ClearCasePlugin::addCurrentFile() vcsAdd(state.currentFileTopLevel(), state.relativeCurrentFile()); } -void ClearCasePlugin::setStatus(const QString &file, ClearCase::Internal::FileStatus::Status status, bool update) +void ClearCasePlugin::setStatus(const QString &file, FileStatus::Status status, bool update) { m_statusMap->insert(file, FileStatus(status, QFileInfo(currentState().topLevel(), file).permissions())); if (update && (currentState().relativeCurrentFile() == file)) - updateStatusActions(); + QMetaObject::invokeMethod(this, "updateStatusActions"); } void ClearCasePlugin::undoCheckOutCurrent() @@ -1940,8 +1940,6 @@ void ClearCasePlugin::sync(QFutureInterface<void> &future, QString topLevel, QSt ClearCasePlugin *plugin = ClearCasePlugin::instance(); ClearCaseSync ccSync(plugin, plugin->m_statusMap); connect(&ccSync, SIGNAL(updateStreamAndView()), plugin, SLOT(updateStreamAndView())); - connect(&ccSync, SIGNAL(setStatus(QString, ClearCase::Internal::FileStatus::Status, bool)), - plugin, SLOT(setStatus(QString, ClearCase::Internal::FileStatus::Status, bool))); ccSync.run(future, topLevel, files); } |