forked from qt-creator/qt-creator
LanguageClient: avoid sending message to server shutting down
Send the workspace change method before the server gets shut down. Prevents an assert in Client::sendContent. Change-Id: Iaedc9829379d987aa6f91a87e26d35b64a9f0f55 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -790,6 +790,15 @@ void Client::projectOpened(ProjectExplorer::Project *project)
|
|||||||
|
|
||||||
void Client::projectClosed(ProjectExplorer::Project *project)
|
void Client::projectClosed(ProjectExplorer::Project *project)
|
||||||
{
|
{
|
||||||
|
if (sendWorkspceFolderChanges()) {
|
||||||
|
WorkspaceFoldersChangeEvent event;
|
||||||
|
event.setRemoved({WorkSpaceFolder(DocumentUri::fromFilePath(project->projectDirectory()),
|
||||||
|
project->displayName())});
|
||||||
|
DidChangeWorkspaceFoldersParams params;
|
||||||
|
params.setEvent(event);
|
||||||
|
DidChangeWorkspaceFoldersNotification change(params);
|
||||||
|
sendContent(change);
|
||||||
|
}
|
||||||
if (project == m_project) {
|
if (project == m_project) {
|
||||||
if (m_state == Initialized) {
|
if (m_state == Initialized) {
|
||||||
shutdown();
|
shutdown();
|
||||||
@@ -798,15 +807,6 @@ void Client::projectClosed(ProjectExplorer::Project *project)
|
|||||||
emit finished();
|
emit finished();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!sendWorkspceFolderChanges())
|
|
||||||
return;
|
|
||||||
WorkspaceFoldersChangeEvent event;
|
|
||||||
event.setRemoved({WorkSpaceFolder(DocumentUri::fromFilePath(project->projectDirectory()),
|
|
||||||
project->displayName())});
|
|
||||||
DidChangeWorkspaceFoldersParams params;
|
|
||||||
params.setEvent(event);
|
|
||||||
DidChangeWorkspaceFoldersNotification change(params);
|
|
||||||
sendContent(change);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::setSupportedLanguage(const LanguageFilter &filter)
|
void Client::setSupportedLanguage(const LanguageFilter &filter)
|
||||||
@@ -1260,6 +1260,8 @@ void Client::shutDownCallback(const ShutdownRequest::Response &shutdownResponse)
|
|||||||
|
|
||||||
bool Client::sendWorkspceFolderChanges() const
|
bool Client::sendWorkspceFolderChanges() const
|
||||||
{
|
{
|
||||||
|
if (!reachable())
|
||||||
|
return false;
|
||||||
if (m_dynamicCapabilities.isRegistered(
|
if (m_dynamicCapabilities.isRegistered(
|
||||||
DidChangeWorkspaceFoldersNotification::methodName).value_or(false)) {
|
DidChangeWorkspaceFoldersNotification::methodName).value_or(false)) {
|
||||||
return true;
|
return true;
|
||||||
|
Reference in New Issue
Block a user