LanguageClient: track clients scheduled for deletion

So report an async shutdown if we have clients scheduled for deletion
and wait until all clients have been fully deleted.

Change-Id: I40d35d3429003ab2a5c68cb81486c3e16b5f6f63
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
David Schulz
2023-05-23 11:02:15 +02:00
parent 38c64e5419
commit 3541b692f5
3 changed files with 28 additions and 3 deletions

View File

@@ -60,12 +60,12 @@ void LanguageClientPlugin::extensionsInitialized()
ExtensionSystem::IPlugin::ShutdownFlag LanguageClientPlugin::aboutToShutdown()
{
LanguageClientManager::shutdown();
if (LanguageClientManager::clients().isEmpty())
if (LanguageClientManager::isShutdownFinished())
return ExtensionSystem::IPlugin::SynchronousShutdown;
QTC_ASSERT(LanguageClientManager::instance(),
return ExtensionSystem::IPlugin::SynchronousShutdown);
connect(LanguageClientManager::instance(), &LanguageClientManager::shutdownFinished,
this, &ExtensionSystem::IPlugin::asynchronousShutdownFinished, Qt::QueuedConnection);
this, &ExtensionSystem::IPlugin::asynchronousShutdownFinished);
return ExtensionSystem::IPlugin::AsynchronousShutdown;
}