From b4eee87876a3835b4e97ae5549ca1c7d1a835b39 Mon Sep 17 00:00:00 2001 From: zorowk Date: Tue, 26 May 2026 15:27:38 +0800 Subject: [PATCH] fix: vt user lookup to prefer real user sessions over greeter entries pms: BUG-349759 log: vt user lookup to prefer real user sessions over greeter entries --- src/daemon/DisplayManager.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/daemon/DisplayManager.cpp b/src/daemon/DisplayManager.cpp index fe698db..d3659a8 100644 --- a/src/daemon/DisplayManager.cpp +++ b/src/daemon/DisplayManager.cpp @@ -180,10 +180,31 @@ namespace DDM { } const QString DisplayManager::findUserByVt(int vtnr) { - for (auto session : m_sessions) { - if (vtnr == session->VTNr()) - return session->User(); + QString greeterUser = QStringLiteral("dde"); + + for (const auto& session : m_sessions) { + if (!session) { + continue; + } + + if (vtnr == session->VTNr()) { + if (session->User() != greeterUser) { + qDebug() << "[DisplayManager] findUserByVt selected user session vtnr=" + << vtnr << " user=" << session->User(); + return session->User(); + } else { + greeterUser = session->User(); + } + } + } + + if (!greeterUser.isEmpty()) { + qDebug() << "[DisplayManager] findUserByVt selected greeter session vtnr=" + << vtnr << " user=" << greeterUser; + return greeterUser; } + + qWarning() << "[DisplayManager] findUserByVt found no session for vtnr=" << vtnr; return QString(); }