From 0931341a7f704c6450f882935bbd82d9de71d7f8 Mon Sep 17 00:00:00 2001 From: Sahil Yeole Date: Wed, 6 Sep 2023 22:43:33 +0530 Subject: [PATCH] prevent frequent loginctl calls Signed-off-by: Sahil Yeole --- libs/hbb_common/src/platform/linux.rs | 9 +++++++++ src/platform/linux.rs | 6 ++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/libs/hbb_common/src/platform/linux.rs b/libs/hbb_common/src/platform/linux.rs index 89c96799d..536ac3091 100644 --- a/libs/hbb_common/src/platform/linux.rs +++ b/libs/hbb_common/src/platform/linux.rs @@ -183,6 +183,15 @@ pub fn is_active(sid: &str) -> bool { } } +pub fn is_active_and_seat0(sid: &str) -> bool { + if let Ok(output) = run_loginctl(Some(vec!["show-session", sid])) { + String::from_utf8_lossy(&output.stdout).contains("State=active") + && String::from_utf8_lossy(&output.stdout).contains("Seat=seat0") + } else { + false + } +} + pub fn run_cmds(cmds: &str) -> ResultType { let output = std::process::Command::new("sh") .args(vec!["-c", cmds]) diff --git a/src/platform/linux.rs b/src/platform/linux.rs index c09d26008..944e24c15 100644 --- a/src/platform/linux.rs +++ b/src/platform/linux.rs @@ -1073,13 +1073,11 @@ mod desktop { } pub fn refresh(&mut self) { - let seat0_values = get_values_of_seat0(&[0, 1, 2]); - if !self.sid.is_empty() && is_active(&self.sid) { - if self.sid == seat0_values[0] { + if !self.sid.is_empty() && is_active_and_seat0(&self.sid) { return; - } } + let seat0_values = get_values_of_seat0(&[0, 1, 2]); if seat0_values[0].is_empty() { *self = Self::default(); self.is_rustdesk_subprocess = false;