From a102ee0729c9de0b72f766bc1de9b707df2cb0b2 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Tue, 25 Oct 2016 11:40:32 +0200 Subject: [PATCH] Clang: Allow avoiding supportive translation unit for debugging ...by providing QTC_CLANG_NO_SUPPORTIVE_TRANSLATIONUNIT=1 in the run environment. Change-Id: If4e92521dfbc2752e4446e7037876d28683c1f66 Reviewed-by: David Schulz --- .../ipcsource/clangcodemodelserver.cpp | 20 ++++++++++++++++--- .../ipcsource/clangcodemodelserver.h | 1 + 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/tools/clangbackend/ipcsource/clangcodemodelserver.cpp b/src/tools/clangbackend/ipcsource/clangcodemodelserver.cpp index 62070b37b0b..3cbbd494453 100644 --- a/src/tools/clangbackend/ipcsource/clangcodemodelserver.cpp +++ b/src/tools/clangbackend/ipcsource/clangcodemodelserver.cpp @@ -55,6 +55,12 @@ #include #include +static bool useSupportiveTranslationUnit() +{ + static bool use = !qEnvironmentVariableIntValue("QTC_CLANG_NO_SUPPORTIVE_TRANSLATIONUNIT"); + return use; +} + namespace ClangBackEnd { ClangCodeModelServer::ClangCodeModelServer() @@ -116,9 +122,7 @@ void ClangCodeModelServer::updateTranslationUnitsForEditor(const UpdateTranslati // we might block the translation unit for a completion request // that comes right after this message. updateDocumentAnnotationsTimer.start(0); - QTimer::singleShot(0, [this, updateDocuments](){ - startInitializingSupportiveTranslationUnits(updateDocuments); - }); + delayStartInitializingSupportiveTranslationUnits(updateDocuments); } } catch (const std::exception &exception) { qWarning() << "Error in ClangCodeModelServer::updateTranslationUnitsForEditor:" << exception.what(); @@ -329,6 +333,16 @@ void ClangCodeModelServer::processInitialJobsForDocuments(const std::vector &documents) +{ + if (useSupportiveTranslationUnit()) { + QTimer::singleShot(0, [this, documents](){ + startInitializingSupportiveTranslationUnits(documents); + }); + } +} + void ClangCodeModelServer::startInitializingSupportiveTranslationUnits( const std::vector &documents) { diff --git a/src/tools/clangbackend/ipcsource/clangcodemodelserver.h b/src/tools/clangbackend/ipcsource/clangcodemodelserver.h index b03b4327faf..2622c01db69 100644 --- a/src/tools/clangbackend/ipcsource/clangcodemodelserver.h +++ b/src/tools/clangbackend/ipcsource/clangcodemodelserver.h @@ -72,6 +72,7 @@ private: void startDocumentAnnotationsTimerIfFileIsNotOpenAsDocument(const Utf8String &filePath); void processInitialJobsForDocuments(const std::vector &documents); + void delayStartInitializingSupportiveTranslationUnits(const std::vector &documents); void startInitializingSupportiveTranslationUnits(const std::vector &documents); void processJobsForDirtyAndVisibleDocuments();