diff options
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 12 | ||||
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.h | 2 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 5916216e57..121d0ebfd2 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>("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<QString> processed; QStringList todo = projectFiles(); diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h index 768129286d..f77e4fae0f 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; |