mirror of
https://invent.kde.org/marcoa/a-la-karte.git
synced 2026-03-27 01:03:09 +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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_daemonGameToSession.insert(gameId, sessionId);
|
|
||||||
m_daemonSessionToGame.insert(sessionId, gameId);
|
|
||||||
|
|
||||||
const QString state = s.value(QStringLiteral("state")).toString();
|
const QString state = s.value(QStringLiteral("state")).toString();
|
||||||
|
|
||||||
if (state == QLatin1String("Exited")) {
|
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;
|
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);
|
Game *game = App::instance()->gameModel()->gameById(gameId);
|
||||||
if (game) {
|
if (game && isActiveState) {
|
||||||
game->setRunning(true);
|
game->setRunning(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_EMIT runningGamesChanged();
|
Q_EMIT runningGamesChanged();
|
||||||
|
|
||||||
applyRunningStateToLibrary();
|
applyRunningStateToLibrary();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue