[fix] restore automatic privacy screen after Windows unlock

This commit is contained in:
kunkundi
2026-10-08 16:12:38 +08:00
parent abcdb214f2
commit b0d6e8a520
6 changed files with 70 additions and 9 deletions
@@ -235,7 +235,7 @@ void PeerEventHandler::OnReceiveDataBuffer(
remote_action.type == ControlType::keyboard_state;
if (!keyboard_input && runtime->privacy_.Engaged() &&
!IsWindowsPrivacyDesktopAvailable()) {
runtime->privacy_.Fail("Secure desktop or lock screen; privacy screen will turn off");
runtime->privacy_.SuspendForDesktop();
}
#endif
}
@@ -46,7 +46,7 @@ void GuiRuntime::SetControllerPrivacySupport(const std::string& remote_id,
void GuiRuntime::ApplyPrivacyAdmission(bool automatic_enable) {
if (!privacy_sessions_.CanEnable()) {
if (privacy_.Engaged()) privacy_.Disable();
privacy_.Disable();
} else if (automatic_enable) {
privacy_.EnableOnConnection();
}
@@ -93,6 +93,9 @@ void GuiRuntime::HandlePrivacy() {
std::vector<std::string> controllers;
{
std::shared_lock lock(connection_status_mutex_);
if (!privacy_sessions_.CanEnable() ||
!config_center_->IsEnablePrivacyScreen())
privacy_.CancelAutomaticResume();
status = privacy_.Snapshot();
for (const auto& [id, state] : connection_status_)
if (state == ConnectionStatus::Connected &&