summaryrefslogtreecommitdiff
path: root/src/plugins/languageclient/languageclientsettings.cpp
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2018-09-13 13:39:01 +0200
committerDavid Schulz <david.schulz@qt.io>2018-09-19 10:44:58 +0000
commitba5f93003ed859947147b7f76d276425d76ab83c (patch)
treeccc9f4963a2a951aa76fa916ce7012cd820fda65 /src/plugins/languageclient/languageclientsettings.cpp
parenta376469eb62a59db33b7a7f3eddde2e22db8ddf7 (diff)
downloadqt-creator-ba5f93003ed859947147b7f76d276425d76ab83c.tar.gz
LSP: correctly shutdown client that is currently being restarted
Change-Id: I9fb0ccd9aa181515efc9368b0b369dfc39dffcd1 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/languageclient/languageclientsettings.cpp')
-rw-r--r--src/plugins/languageclient/languageclientsettings.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/plugins/languageclient/languageclientsettings.cpp b/src/plugins/languageclient/languageclientsettings.cpp
index e43d064f01..c059dafed0 100644
--- a/src/plugins/languageclient/languageclientsettings.cpp
+++ b/src/plugins/languageclient/languageclientsettings.cpp
@@ -351,7 +351,8 @@ void LanguageClientSettingsModel::applyChanges()
QList<LanguageClientSettings> toStart = m_settings;
// check currently registered interfaces
for (auto interface : interfaces) {
- auto setting = Utils::findOr(m_settings, LanguageClientSettings(), [interface](const LanguageClientSettings &setting){
+ auto setting = Utils::findOr(m_settings, LanguageClientSettings(),
+ [interface](const LanguageClientSettings &setting){
return interface->matches(setting);
});
if (setting.isValid() && setting.m_enabled) {
@@ -362,8 +363,12 @@ void LanguageClientSettingsModel::applyChanges()
toShutdown << interface;
}
}
- for (auto interface : toShutdown)
- interface->shutdown();
+ for (auto interface : toShutdown) {
+ if (interface->reachable())
+ interface->shutdown();
+ else
+ LanguageClientManager::deleteClient(interface);
+ }
for (auto setting : toStart) {
if (setting.isValid() && setting.m_enabled)
LanguageClientManager::startClient(setting);