forked from qt-creator/qt-creator
CppTools: Cancel parsing if editor is closed
The m_parserFuture.cancel() in ~BuiltinEditorDocumentProcessor() did not cancel anything. Thus, closing a document while the parser was running led to a blocking UI thread. Now it cancels at the next include directive it encounters. Change-Id: I092fddbbd747e0bc95265b6e9b4fcc26b3f76cb3 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
committed by
Tim Jenssen
parent
c8020af997
commit
ad49e64ff0
@@ -29,6 +29,7 @@
|
||||
#include "cppworkingcopy.h"
|
||||
#include "projectpart.h"
|
||||
|
||||
#include <QFutureInterface>
|
||||
#include <QObject>
|
||||
#include <QMutex>
|
||||
|
||||
@@ -39,7 +40,7 @@ class CPPTOOLS_EXPORT BaseEditorDocumentParser : public QObject
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
using Ptr = QSharedPointer<BaseEditorDocumentParser>;;
|
||||
using Ptr = QSharedPointer<BaseEditorDocumentParser>;
|
||||
static Ptr get(const QString &filePath);
|
||||
|
||||
struct Configuration {
|
||||
@@ -58,6 +59,7 @@ public:
|
||||
void setConfiguration(const Configuration &configuration);
|
||||
|
||||
void update(const WorkingCopy &workingCopy);
|
||||
void update(const QFutureInterface<void> &future, const WorkingCopy &workingCopy);
|
||||
|
||||
ProjectPart::Ptr projectPart() const;
|
||||
|
||||
@@ -76,7 +78,8 @@ protected:
|
||||
mutable QMutex m_stateAndConfigurationMutex;
|
||||
|
||||
private:
|
||||
virtual void updateHelper(const WorkingCopy &workingCopy) = 0;
|
||||
virtual void updateHelper(const QFutureInterface<void> &future,
|
||||
const WorkingCopy &workingCopy) = 0;
|
||||
|
||||
const QString m_filePath;
|
||||
Configuration m_configuration;
|
||||
|
||||
Reference in New Issue
Block a user