From 03056a6d6419eee8ab7eee1a8ebaf29f752b31ee Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Wed, 2 Dec 2015 14:29:38 +0100 Subject: [PATCH] Clang: Make document annotations timer configurable ...by environment variable. Change-Id: If20589e84dea2366fd9b6b273259ce29eddb965b Reviewed-by: Marco Bubke --- .../clangbackend/ipcsource/clangipcserver.cpp | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/tools/clangbackend/ipcsource/clangipcserver.cpp b/src/tools/clangbackend/ipcsource/clangipcserver.cpp index 8db5e823d48..c8bd3634e72 100644 --- a/src/tools/clangbackend/ipcsource/clangipcserver.cpp +++ b/src/tools/clangbackend/ipcsource/clangipcserver.cpp @@ -66,7 +66,29 @@ namespace ClangBackEnd { namespace { -const int delayedDocumentAnnotationsTimerInterval = 3000; + +int getIntervalFromEnviromentVariable() +{ + const QByteArray userIntervalAsByteArray = qgetenv("QTC_CLANG_DELAYED_REPARSE_TIMEOUT"); + + bool isConversionOk = false; + const int intervalAsInt = userIntervalAsByteArray.toInt(&isConversionOk); + + if (isConversionOk) + return intervalAsInt; + else + return -1; +} + +int delayedDocumentAnnotationsTimerInterval() +{ + static const int defaultInterval = 3000; + static const int userDefinedInterval = getIntervalFromEnviromentVariable(); + static const int interval = userDefinedInterval >= 0 ? userDefinedInterval : defaultInterval; + + return interval; +} + } ClangIpcServer::ClangIpcServer() @@ -138,7 +160,7 @@ void ClangIpcServer::updateTranslationUnitsForEditor(const UpdateTranslationUnit if (newerFileContainers.size() > 0) { translationUnits.update(newerFileContainers); unsavedFiles.createOrUpdate(newerFileContainers); - sendDocumentAnnotationsTimer.start(delayedDocumentAnnotationsTimerInterval); + sendDocumentAnnotationsTimer.start(delayedDocumentAnnotationsTimerInterval()); } } catch (const ProjectPartDoNotExistException &exception) { client()->projectPartsDoNotExist(ProjectPartsDoNotExistMessage(exception.projectPartIds())); @@ -196,7 +218,7 @@ void ClangIpcServer::registerUnsavedFilesForEditor(const RegisterUnsavedFilesFor try { unsavedFiles.createOrUpdate(message.fileContainers()); translationUnits.updateTranslationUnitsWithChangedDependencies(message.fileContainers()); - sendDocumentAnnotationsTimer.start(delayedDocumentAnnotationsTimerInterval); + sendDocumentAnnotationsTimer.start(delayedDocumentAnnotationsTimerInterval()); } catch (const ProjectPartDoNotExistException &exception) { client()->projectPartsDoNotExist(ProjectPartsDoNotExistMessage(exception.projectPartIds())); } catch (const std::exception &exception) {