LanguageClient: use separate variable to save shutdown state

The LanguageClientManager might be already gone.

Change-Id: Ia674a8c76e0c1bb39e1503be9cffc20fd69120bb
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2022-10-11 10:24:57 +02:00
parent 76ffb54e90
commit fc24f5c26d
2 changed files with 8 additions and 8 deletions

View File

@@ -35,6 +35,7 @@ namespace LanguageClient {
static Q_LOGGING_CATEGORY(Log, "qtc.languageclient.manager", QtWarningMsg)
static LanguageClientManager *managerInstance = nullptr;
static bool g_shuttingDown = false;
LanguageClientManager::LanguageClientManager(QObject *parent)
: QObject (parent)
@@ -112,7 +113,7 @@ void LanguageClientManager::clientStarted(Client *client)
qCDebug(Log) << "client started: " << client->name() << client;
QTC_ASSERT(managerInstance, return);
QTC_ASSERT(client, return);
if (managerInstance->m_shuttingDown) {
if (g_shuttingDown) {
clientFinished(client);
return;
}
@@ -131,7 +132,7 @@ void LanguageClientManager::clientFinished(Client *client)
&& client->state() != Client::ShutdownRequested;
if (unexpectedFinish) {
if (!managerInstance->m_shuttingDown) {
if (!g_shuttingDown) {
const QList<TextEditor::TextDocument *> &clientDocs
= managerInstance->m_clientForDocument.keys(client);
if (client->reset()) {
@@ -153,7 +154,7 @@ void LanguageClientManager::clientFinished(Client *client)
}
}
deleteClient(client);
if (managerInstance->m_shuttingDown && managerInstance->m_clients.isEmpty())
if (g_shuttingDown && managerInstance->m_clients.isEmpty())
emit managerInstance->shutdownFinished();
}
@@ -218,17 +219,17 @@ void LanguageClientManager::deleteClient(Client *client)
for (QList<Client *> &clients : managerInstance->m_clientsForSetting)
clients.removeAll(client);
client->deleteLater();
if (!managerInstance->m_shuttingDown)
if (!g_shuttingDown)
emit instance()->clientRemoved(client);
}
void LanguageClientManager::shutdown()
{
QTC_ASSERT(managerInstance, return);
if (managerInstance->m_shuttingDown)
if (g_shuttingDown)
return;
qCDebug(Log) << "shutdown manager";
managerInstance->m_shuttingDown = true;
g_shuttingDown = true;
const auto clients = managerInstance->clients();
for (Client *client : clients)
shutdownClient(client);
@@ -242,7 +243,7 @@ void LanguageClientManager::shutdown()
bool LanguageClientManager::isShuttingDown()
{
return managerInstance->m_shuttingDown;
return g_shuttingDown;
}
LanguageClientManager *LanguageClientManager::instance()

View File

@@ -100,7 +100,6 @@ private:
QList<Client *> reachableClients();
bool m_shuttingDown = false;
QList<Client *> m_clients;
QList<BaseSettings *> m_currentSettings; // owned
QMap<QString, QList<Client *>> m_clientsForSetting;