From 56157f739d8547c0abf1500ef3a696531f3e9338 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Thu, 18 Jan 2018 12:16:43 +0100 Subject: [PATCH] Clang: Cancel tooltip future on backend restart Change-Id: Icbc461aa765c47ae0dd708a731b4d132bfa0f7d8 Reviewed-by: Ivan Donchevskii --- src/plugins/clangcodemodel/clangbackendreceiver.cpp | 7 ++++++- src/plugins/clangcodemodel/clanghoverhandler.cpp | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/clangcodemodel/clangbackendreceiver.cpp b/src/plugins/clangcodemodel/clangbackendreceiver.cpp index f2606d74cc5..3794eb0b6ba 100644 --- a/src/plugins/clangcodemodel/clangbackendreceiver.cpp +++ b/src/plugins/clangcodemodel/clangbackendreceiver.cpp @@ -151,7 +151,7 @@ void BackendReceiver::reset() qDeleteAll(m_assistProcessorsTable.begin(), m_assistProcessorsTable.end()); m_assistProcessorsTable.clear(); - // Clean up futures for references + // Clean up futures for references; TODO: Remove duplication for (ReferencesEntry &entry : m_referencesTable) { entry.futureInterface.cancel(); entry.futureInterface.reportFinished(); @@ -162,6 +162,11 @@ void BackendReceiver::reset() futureInterface.reportFinished(); } m_followTable.clear(); + for (QFutureInterface &futureInterface : m_toolTipsTable) { + futureInterface.cancel(); + futureInterface.reportFinished(); + } + m_toolTipsTable.clear(); } void BackendReceiver::alive() diff --git a/src/plugins/clangcodemodel/clanghoverhandler.cpp b/src/plugins/clangcodemodel/clanghoverhandler.cpp index 2281b5d304e..5903b182467 100644 --- a/src/plugins/clangcodemodel/clanghoverhandler.cpp +++ b/src/plugins/clangcodemodel/clanghoverhandler.cpp @@ -144,8 +144,10 @@ void ClangHoverHandler::identifyMatch(TextEditorWidget *editorWidget, void ClangHoverHandler::abort() { - if (m_futureWatcher) + if (m_futureWatcher) { m_futureWatcher->cancel(); + m_futureWatcher.reset(); + } } #define RETURN_TEXT_FOR_CASE(enumValue) case TextEditor::HelpItem::enumValue: return #enumValue