prevent frequent loginctl calls

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
This commit is contained in:
Sahil Yeole 2023-09-06 22:43:33 +05:30
parent 58bbc33aa6
commit 0931341a7f
2 changed files with 11 additions and 4 deletions

View File

@ -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<String> {
let output = std::process::Command::new("sh")
.args(vec!["-c", cmds])

View File

@ -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;