diff --git a/src/plugins/simulator/fs9/simulator_fs9.cpp b/src/plugins/simulator/fs9/simulator_fs9.cpp index 94ab57991..ee7c8e47f 100644 --- a/src/plugins/simulator/fs9/simulator_fs9.cpp +++ b/src/plugins/simulator/fs9/simulator_fs9.cpp @@ -313,6 +313,27 @@ namespace BlackSimPlugin } } + void CSimulatorFs9::ps_changeClientStatus(const QString &callsign, CFs9Client::ClientStatus status) + { + switch (status) + { + case CFs9Client::Disconnected: + { + CFs9Client *client = m_hashFs9Clients.value(callsign); + Q_ASSERT(m_fs9ClientThreads.contains(client)); + QThread *clientThread = m_fs9ClientThreads.value(client); + + // Cleanup + client->deleteLater(); + connect(clientThread, &QThread::finished, clientThread, &QThread::deleteLater); + clientThread->quit(); + + m_fs9ClientThreads.remove(client); + m_hashFs9Clients.remove(callsign); + } + } + } + void CSimulatorFs9::ps_removeAircraft(const QString &callsign) { removeRemoteAircraft(callsign); diff --git a/src/plugins/simulator/fs9/simulator_fs9.h b/src/plugins/simulator/fs9/simulator_fs9.h index c08c15207..e4a84d796 100644 --- a/src/plugins/simulator/fs9/simulator_fs9.h +++ b/src/plugins/simulator/fs9/simulator_fs9.h @@ -137,6 +137,8 @@ namespace BlackSimPlugin //! Change DirectPlay host status void ps_changeHostStatus(CFs9Host::HostStatus status); + void ps_changeClientStatus(const QString &callsign, BlackSimPlugin::Fs9::CFs9Client::ClientStatus status); + //! Remove client by callsign QString void ps_removeAircraft(const QString &callsign);