summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@digia.com>2013-04-19 16:56:12 +0200
committerErik Verbruggen <erik.verbruggen@digia.com>2013-04-22 10:08:55 +0200
commitcd581ecd0b59a46529d6e30ea647dc64c755803f (patch)
tree356b71ef3c8f0dd49f41c4843f9fe0b53b94933f /src/plugins/cpptools
parent564c9b2842663062658a0febdcc5787098d871b2 (diff)
downloadqt-creator-cd581ecd0b59a46529d6e30ea647dc64c755803f.tar.gz
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 <Friedemann.Kleint@digia.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp12
-rw-r--r--src/plugins/cpptools/cppmodelmanager.h2
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;