mirror of
https://invent.kde.org/marcoa/a-la-karte.git
synced 2026-03-26 17:03:08 +00:00
Fix session state tracking on Exited, duplicate sessions, and Unknown state
This commit is contained in:
parent
e216acc3df
commit
c7110f62a2
1 changed files with 19 additions and 5 deletions
|
|
@ -761,21 +761,35 @@ void GameLauncher::onDaemonSessionChanged(const QVariantMap &session)
|
|||
return;
|
||||
}
|
||||
|
||||
m_daemonGameToSession.insert(gameId, sessionId);
|
||||
m_daemonSessionToGame.insert(sessionId, gameId);
|
||||
|
||||
const QString state = s.value(QStringLiteral("state")).toString();
|
||||
|
||||
if (state == QLatin1String("Exited")) {
|
||||
m_daemonGameToSession.remove(gameId);
|
||||
m_daemonSessionToGame.remove(sessionId);
|
||||
Game *game = App::instance()->gameModel()->gameById(gameId);
|
||||
if (game) {
|
||||
game->setRunning(false);
|
||||
}
|
||||
Q_EMIT runningGamesChanged();
|
||||
applyRunningStateToLibrary();
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_daemonSessionToGame.contains(sessionId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_daemonGameToSession.insert(gameId, sessionId);
|
||||
m_daemonSessionToGame.insert(sessionId, gameId);
|
||||
|
||||
const bool isActiveState = state == QLatin1String("Running") || state == QLatin1String("Launching") || state == QLatin1String("Stopping");
|
||||
|
||||
Game *game = App::instance()->gameModel()->gameById(gameId);
|
||||
if (game) {
|
||||
if (game && isActiveState) {
|
||||
game->setRunning(true);
|
||||
}
|
||||
|
||||
Q_EMIT runningGamesChanged();
|
||||
|
||||
applyRunningStateToLibrary();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue