summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppprojectupdater.h
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2021-05-26 09:06:06 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2021-05-27 07:56:35 +0000
commit03b73243252fbbf3ba7ae3831a45b96397ecc935 (patch)
tree3e6dd88b1ef7e7b3591c2dfdf63b5538a91f665a /src/plugins/cpptools/cppprojectupdater.h
parentff0ff1a3b52b8b4bb15b077a33e1e0d9b6af4ab4 (diff)
downloadqt-creator-03b73243252fbbf3ba7ae3831a45b96397ecc935.tar.gz
CppProjectUpdater: Wait for all tasks to be finished in d'tor
It may happen that the old task was canceled and still running while the new task was started. Later, when the d'tor is called both old and new tasks may still be running. Before we waited only for the new task to be finished in d'tor. Now we are waiting for all tasks to be finished. Amends: 7fb592fe0cfec22ae7e966b9c6b88aa801bf9592 Task-number: QTCREATORBUG-25709 Change-Id: Id4b44cd36ee03aa45472b15d8fbb25a2cab77e92 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/cpptools/cppprojectupdater.h')
-rw-r--r--src/plugins/cpptools/cppprojectupdater.h8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/plugins/cpptools/cppprojectupdater.h b/src/plugins/cpptools/cppprojectupdater.h
index f3f85a8a14..6b994871ef 100644
--- a/src/plugins/cpptools/cppprojectupdater.h
+++ b/src/plugins/cpptools/cppprojectupdater.h
@@ -29,6 +29,8 @@
#include "cpptools_global.h"
#include "projectinfo.h"
+#include <utils/futuresynchronizer.h>
+
#include <QFutureWatcher>
namespace CppTools {
@@ -52,23 +54,19 @@ class CPPTOOLS_EXPORT CppProjectUpdater final : public QObject, public CppProjec
public:
CppProjectUpdater();
- ~CppProjectUpdater() override;
void update(const ProjectExplorer::ProjectUpdateInfo &projectUpdateInfo) override;
void cancel() override;
private:
- void cancelAndWaitForFinished();
-
void onToolChainRemoved(ProjectExplorer::ToolChain *);
void onProjectInfoGenerated();
private:
ProjectExplorer::ProjectUpdateInfo m_projectUpdateInfo;
- QFuture<ProjectInfo> m_generateFuture;
- QFuture<void> m_updateFuture;
QFutureWatcher<ProjectInfo> m_generateFutureWatcher;
+ Utils::FutureSynchronizer m_futureSynchronizer;
};
} // namespace CppTools