diff --git a/src/greeter/greeterproxy.cpp b/src/greeter/greeterproxy.cpp index 37defcf7f..521cce88a 100644 --- a/src/greeter/greeterproxy.cpp +++ b/src/greeter/greeterproxy.cpp @@ -137,6 +137,7 @@ void GreeterProxy::setShowShutdownView(bool show) { void GreeterProxy::setLock(bool isLocked) { if (isLocked && !m_isLocked) { + // m_isLocked must be set before m_lockScreen->lock() to prevent re-entry m_isLocked = true; if (m_lockScreen && !m_lockScreen->isVisible()) m_lockScreen->lock(); @@ -242,6 +243,7 @@ void GreeterProxy::lock() } qCInfo(lcTlGreeter) << "Locking user" << session->username() << "with session id" << session->id(); SocketWriter(m_socket) << quint32(GreeterMessages::Lock) << session->id(); + setLock(true); } ////////////////////////////// @@ -347,8 +349,8 @@ void GreeterProxy::onSessionLock() qCWarning(lcTlGreeter) << "Lock signal received for non-exist session id:" << id << ", ignore."; else if (activeSession->id() != id) - qCWarning(lcTlGreeter) - << "Lock signal received for non-active session id:" << id << ", ignore."; + qCDebug(lcTlGreeter) + << "Lock signal received for session id:" << id << ", already locked via lock() call."; else QMetaObject::invokeMethod(this, [this] { setLock(true); diff --git a/src/plugins/lockscreen/qml/UserInput.qml b/src/plugins/lockscreen/qml/UserInput.qml index e368d4904..0e827228a 100644 --- a/src/plugins/lockscreen/qml/UserInput.qml +++ b/src/plugins/lockscreen/qml/UserInput.qml @@ -323,6 +323,7 @@ Item { passwordField.text = '' avatar.fallbackSource = currentUser.icon hintText.text = normalHint + Qt.callLater(function() { passwordField.forceActiveFocus() }) } function startOtherUserMode() {