From cd581ecd0b59a46529d6e30ea647dc64c755803f Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Fri, 19 Apr 2013 16:56:12 +0200 Subject: [PATCH] C++: do not run GC when exiting. This operation is quite costly if a lot of files are involved, and in case of exiting Creator, it's also useless. Change-Id: I97d178d47a3a2f6b214f7ebc45c871edd26b8286 Reviewed-by: Friedemann Kleint Reviewed-by: Eike Ziller --- src/plugins/cpptools/cppmodelmanager.cpp | 12 ++++++++++++ src/plugins/cpptools/cppmodelmanager.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 5916216e578..121d0ebfd2e 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -626,6 +626,7 @@ CppModelManager *CppModelManager::instance() CppModelManager::CppModelManager(QObject *parent) : CppModelManagerInterface(parent) + , m_enableGC(true) , m_completionAssistProvider(0) , m_highlightingFactory(0) , m_indexingSupporter(0) @@ -656,6 +657,9 @@ CppModelManager::CppModelManager(QObject *parent) connect(session, SIGNAL(aboutToUnloadSession(QString)), this, SLOT(onAboutToUnloadSession())); + connect(Core::ICore::instance(), SIGNAL(coreAboutToClose()), + this, SLOT(onCoreAboutToClose())); + qRegisterMetaType("CPlusPlus::Document::Ptr"); // thread connections @@ -1209,8 +1213,16 @@ void CppModelManager::onAboutToUnloadSession() GC(); } +void CppModelManager::onCoreAboutToClose() +{ + m_enableGC = false; +} + void CppModelManager::GC() { + if (!m_enableGC) + return; + Snapshot currentSnapshot = snapshot(); QSet processed; QStringList todo = projectFiles(); diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h index 768129286d9..f77e4fae0f7 100644 --- a/src/plugins/cpptools/cppmodelmanager.h +++ b/src/plugins/cpptools/cppmodelmanager.h @@ -171,6 +171,7 @@ private Q_SLOTS: void onExtraDiagnosticsUpdated(const QString &fileName); void onAboutToRemoveProject(ProjectExplorer::Project *project); void onAboutToUnloadSession(); + void onCoreAboutToClose(); void onProjectAdded(ProjectExplorer::Project *project); void postEditorUpdate(); void updateEditorSelections(); @@ -195,6 +196,7 @@ private: private: CPlusPlus::Snapshot m_snapshot; + bool m_enableGC; // cache bool m_dirty;