summaryrefslogtreecommitdiff
path: root/src/plugins/classview/classviewparser.cpp
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2021-02-16 17:44:28 +0100
committerJarek Kobus <jaroslaw.kobus@qt.io>2021-02-16 19:53:14 +0000
commit72f727b6aca14e16961f6bcb20b3fc06c2cbfafc (patch)
tree518e98b454410090c7ae746e365d3dc8e1438526 /src/plugins/classview/classviewparser.cpp
parent8c5dc305aeb73c5d3a1818c16907611c00531b79 (diff)
downloadqt-creator-72f727b6aca14e16961f6bcb20b3fc06c2cbfafc.tar.gz
ClassView: Delete Parser object from inside parser's thread
The Parser object is being moved to parser's thread inside Manager constructor. However, when destructor of Manager is being called, we delete the Parser from inside the main thread. According to QThread documentation we should delete object (which have been moved to another thread) from inside the object's current thread. So in case of Parser, we should delete it from the parser's thread. In order to fix it, we create Parser object dynamically and connect finished signal of the parser's thread to the parser's deleteLater(). Since now the parser is being deleted in parser's thread we don't need a special handling for stopping the timer object inside the parser's thread, as its destructor will also be called from inside parser's thread. Task-number: QTCREATORBUG-25317 Change-Id: I28dee2c3db5cf8329a9578e7a85952e8a85850d3 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/classview/classviewparser.cpp')
-rw-r--r--src/plugins/classview/classviewparser.cpp9
1 files changed, 1 insertions, 8 deletions
diff --git a/src/plugins/classview/classviewparser.cpp b/src/plugins/classview/classviewparser.cpp
index 01bdb278bb..d4b8716751 100644
--- a/src/plugins/classview/classviewparser.cpp
+++ b/src/plugins/classview/classviewparser.cpp
@@ -88,7 +88,6 @@ public:
CPlusPlus::Document::Ptr document(const QString &fileName) const;
QTimer timer;
- bool m_shuttingDown = false;
struct DocumentCache {
unsigned treeRevision = 0;
@@ -160,12 +159,6 @@ void Parser::setFlatMode(bool flatMode)
requestCurrentState();
}
-void Parser::aboutToShutdown()
-{
- d->m_shuttingDown = true;
- d->timer.stop();
-}
-
/*!
Parses the class and produces a new tree.
@@ -331,7 +324,7 @@ void Parser::parseDocument(const CPlusPlus::Document::Ptr &doc)
getParseDocumentTree(doc);
- if (!d->timer.isActive() && !d->m_shuttingDown)
+ if (!d->timer.isActive())
d->timer.start(400); //! Delay in msecs before an update
}