From 8e9e1af7b8032577372be2016cd15acf2c7a9a89 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 29 Mar 2018 18:38:43 +0200 Subject: [PATCH] Clang: Handle warning inside of the event loop Change-Id: Ic0120beefcba209c572ce0a03b21d30e764c2ad3 Reviewed-by: Ivan Donchevskii --- .../clangpchmanagerbackendmain.cpp | 21 ++++++++++++++-- .../clangrefactoringbackendmain.cpp | 24 ++++++++++++++++--- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp b/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp index 6289e95a176..27acd5b398f 100644 --- a/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp +++ b/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp @@ -57,6 +57,23 @@ using ClangBackEnd::PchManagerServer; using ClangBackEnd::ProjectParts; using ClangBackEnd::FilePathCache; +class PchManagerApplication : public QCoreApplication +{ +public: + using QCoreApplication::QCoreApplication; + + bool notify(QObject *object, QEvent *event) override + { + try { + return QCoreApplication::notify(object, event); + } catch (Sqlite::Exception &exception) { + exception.printWarning(); + } + + return false; + } +}; + class ApplicationEnvironment : public ClangBackEnd::Environment { public: @@ -106,13 +123,13 @@ int main(int argc, char *argv[]) QCoreApplication::setApplicationName(QStringLiteral("ClangPchManagerBackend")); QCoreApplication::setApplicationVersion(QStringLiteral("0.1.0")); - QCoreApplication application(argc, argv); + PchManagerApplication application(argc, argv); const QStringList arguments = processArguments(application); const QString connectionName = arguments[0]; const QString databasePath = arguments[1]; - Sqlite::Database database{Utils::PathString{databasePath}, 1000ms}; + Sqlite::Database database{Utils::PathString{databasePath}, 100000ms}; ClangBackEnd::RefactoringDatabaseInitializer databaseInitializer{database}; ClangBackEnd::FilePathCaching filePathCache{database}; ClangPathWatcher includeWatcher(filePathCache); diff --git a/src/tools/clangrefactoringbackend/clangrefactoringbackendmain.cpp b/src/tools/clangrefactoringbackend/clangrefactoringbackendmain.cpp index f2caace9051..0bc703abf57 100644 --- a/src/tools/clangrefactoringbackend/clangrefactoringbackendmain.cpp +++ b/src/tools/clangrefactoringbackend/clangrefactoringbackendmain.cpp @@ -35,6 +35,8 @@ #include #include +#include + #include using namespace std::chrono_literals; @@ -62,6 +64,23 @@ QStringList processArguments(QCoreApplication &application) return parser.positionalArguments(); } +class RefactoringApplication : public QCoreApplication +{ +public: + using QCoreApplication::QCoreApplication; + + bool notify(QObject *object, QEvent *event) override + { + try { + return QCoreApplication::notify(object, event); + } catch (Sqlite::Exception &exception) { + exception.printWarning(); + } + + return false; + } +}; + int main(int argc, char *argv[]) { try { @@ -72,13 +91,13 @@ int main(int argc, char *argv[]) QCoreApplication::setApplicationName(QStringLiteral("ClangRefactoringBackend")); QCoreApplication::setApplicationVersion(QStringLiteral("0.1.0")); - QCoreApplication application(argc, argv); + RefactoringApplication application(argc, argv); const QStringList arguments = processArguments(application); const QString connectionName = arguments[0]; const QString databasePath = arguments[1]; - Sqlite::Database database{Utils::PathString{databasePath}, 1000ms}; + Sqlite::Database database{Utils::PathString{databasePath}, 100000ms}; RefactoringDatabaseInitializer databaseInitializer{database}; FilePathCaching filePathCache{database}; SymbolIndexing symbolIndexing{database, filePathCache}; @@ -87,7 +106,6 @@ int main(int argc, char *argv[]) connectionServer.setServer(&clangCodeModelServer); connectionServer.start(connectionName); - return application.exec(); } catch (const Sqlite::Exception &exception) { exception.printWarning();