From dd97dc580b93ace915c12919845fd4f1ce58189c Mon Sep 17 00:00:00 2001 From: Sahil Yeole Date: Mon, 7 Aug 2023 12:12:30 +0530 Subject: [PATCH 1/6] remove get seat0 tries Signed-off-by: Sahil Yeole --- libs/hbb_common/src/platform/linux.rs | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/libs/hbb_common/src/platform/linux.rs b/libs/hbb_common/src/platform/linux.rs index 1d33c36be..89c96799d 100644 --- a/libs/hbb_common/src/platform/linux.rs +++ b/libs/hbb_common/src/platform/linux.rs @@ -124,24 +124,12 @@ fn line_values(indices: &[usize], line: &str) -> Vec { #[inline] pub fn get_values_of_seat0(indices: &[usize]) -> Vec { - _get_values_of_seat0_tries(indices, true, 20) + _get_values_of_seat0(indices, true) } #[inline] pub fn get_values_of_seat0_with_gdm_wayland(indices: &[usize]) -> Vec { - _get_values_of_seat0_tries(indices, false, 20) -} - -fn _get_values_of_seat0_tries(indices: &[usize], ignore_gdm_wayland: bool, attempts: usize) -> Vec { - for _ in 0..attempts{ - let value = _get_values_of_seat0(indices, ignore_gdm_wayland); - if value != line_values(indices, "") { - return value; - } - // Wait for 300ms and try again - std::thread::sleep(std::time::Duration::from_millis(300)); - } - line_values(indices, "") + _get_values_of_seat0(indices, false) } fn _get_values_of_seat0(indices: &[usize], ignore_gdm_wayland: bool) -> Vec { From 897dc1c2ba7ca2c03b6d6d11cbc92de624a76bf4 Mon Sep 17 00:00:00 2001 From: Sahil Yeole Date: Mon, 7 Aug 2023 12:14:35 +0530 Subject: [PATCH 2/6] add delay in refresh Signed-off-by: Sahil Yeole --- src/platform/linux.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/platform/linux.rs b/src/platform/linux.rs index cda26ea10..8ef120f09 100644 --- a/src/platform/linux.rs +++ b/src/platform/linux.rs @@ -1077,6 +1077,8 @@ mod desktop { return; } + // wait 2 seconds before getting seat0 values; was required for lightdm to get correct values + std::thread::sleep(Duration::from_secs(2)); let seat0_values = get_values_of_seat0(&[0, 1, 2]); if seat0_values[0].is_empty() { *self = Self::default(); From d28d3baf056f09509fcc0813295ac6024e762806 Mon Sep 17 00:00:00 2001 From: Sahil Yeole Date: Mon, 7 Aug 2023 12:42:11 +0530 Subject: [PATCH 3/6] skip env tries for lightdm login screen Signed-off-by: Sahil Yeole --- src/platform/linux.rs | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/platform/linux.rs b/src/platform/linux.rs index 8ef120f09..4162b8a26 100644 --- a/src/platform/linux.rs +++ b/src/platform/linux.rs @@ -919,13 +919,19 @@ mod desktop { } fn get_display(&mut self) { - let display_envs = vec![GNOME_SESSION_BINARY, XFCE4_PANEL, SDDM_GREETER, PLASMA_X11]; - for diplay_env in display_envs { - self.display = get_env_tries("DISPLAY", &self.uid, diplay_env, 20); - if !self.display.is_empty() { - break; + // skip env tries for lightdm login screen + if self.username != "lightdm"{ + let display_envs = vec![GNOME_SESSION_BINARY, XFCE4_PANEL, SDDM_GREETER, PLASMA_X11]; + for display_env in display_envs { + self.display = get_env_tries("DISPLAY", &self.uid, display_env, 10); + if !self.display.is_empty() { + break; + } } } + else { + self.display = String::new(); + } if self.display.is_empty() { self.display = Self::get_display_by_user(&self.username); @@ -982,13 +988,19 @@ mod desktop { fn get_xauth(&mut self) { // try by direct access to window manager process by name - let display_envs = vec![GNOME_SESSION_BINARY, XFCE4_PANEL, SDDM_GREETER, PLASMA_X11]; - for diplay_env in display_envs { - self.xauth = get_env_tries("XAUTHORITY", &self.uid, diplay_env, 20); - if !self.xauth.is_empty() { - break; + // skip env tries for lightdm login screen + if self.username != "lightdm"{ + let display_envs = vec![GNOME_SESSION_BINARY, XFCE4_PANEL, SDDM_GREETER, PLASMA_X11]; + for display_env in display_envs { + self.xauth = get_env_tries("XAUTHORITY", &self.uid, display_env, 20); + if !self.xauth.is_empty() { + break; + } } } + else { + self.xauth = String::new(); + } // get from Xorg process, parameter and environment if self.xauth.is_empty() { From 6b17644d98ab1337088ee1ceb9fe2668d3362fa4 Mon Sep 17 00:00:00 2001 From: Sahil Yeole Date: Wed, 9 Aug 2023 17:34:26 +0530 Subject: [PATCH 4/6] Revert "add delay in refresh" This reverts commit 897dc1c2ba7ca2c03b6d6d11cbc92de624a76bf4. --- src/platform/linux.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/platform/linux.rs b/src/platform/linux.rs index 4162b8a26..c8609db20 100644 --- a/src/platform/linux.rs +++ b/src/platform/linux.rs @@ -1089,8 +1089,6 @@ mod desktop { return; } - // wait 2 seconds before getting seat0 values; was required for lightdm to get correct values - std::thread::sleep(Duration::from_secs(2)); let seat0_values = get_values_of_seat0(&[0, 1, 2]); if seat0_values[0].is_empty() { *self = Self::default(); From 0d2c46a893741479434092cbf779287b48efed48 Mon Sep 17 00:00:00 2001 From: Sahil Yeole Date: Wed, 9 Aug 2023 17:35:02 +0530 Subject: [PATCH 5/6] Revert "skip env tries for lightdm login screen" This reverts commit d28d3baf056f09509fcc0813295ac6024e762806. --- src/platform/linux.rs | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/src/platform/linux.rs b/src/platform/linux.rs index c8609db20..cda26ea10 100644 --- a/src/platform/linux.rs +++ b/src/platform/linux.rs @@ -919,19 +919,13 @@ mod desktop { } fn get_display(&mut self) { - // skip env tries for lightdm login screen - if self.username != "lightdm"{ - let display_envs = vec![GNOME_SESSION_BINARY, XFCE4_PANEL, SDDM_GREETER, PLASMA_X11]; - for display_env in display_envs { - self.display = get_env_tries("DISPLAY", &self.uid, display_env, 10); - if !self.display.is_empty() { - break; - } + let display_envs = vec![GNOME_SESSION_BINARY, XFCE4_PANEL, SDDM_GREETER, PLASMA_X11]; + for diplay_env in display_envs { + self.display = get_env_tries("DISPLAY", &self.uid, diplay_env, 20); + if !self.display.is_empty() { + break; } } - else { - self.display = String::new(); - } if self.display.is_empty() { self.display = Self::get_display_by_user(&self.username); @@ -988,19 +982,13 @@ mod desktop { fn get_xauth(&mut self) { // try by direct access to window manager process by name - // skip env tries for lightdm login screen - if self.username != "lightdm"{ - let display_envs = vec![GNOME_SESSION_BINARY, XFCE4_PANEL, SDDM_GREETER, PLASMA_X11]; - for display_env in display_envs { - self.xauth = get_env_tries("XAUTHORITY", &self.uid, display_env, 20); - if !self.xauth.is_empty() { - break; - } + let display_envs = vec![GNOME_SESSION_BINARY, XFCE4_PANEL, SDDM_GREETER, PLASMA_X11]; + for diplay_env in display_envs { + self.xauth = get_env_tries("XAUTHORITY", &self.uid, diplay_env, 20); + if !self.xauth.is_empty() { + break; } } - else { - self.xauth = String::new(); - } // get from Xorg process, parameter and environment if self.xauth.is_empty() { From ebfebdffa7a23c66f7aa508f9fb02e0dedb7acc5 Mon Sep 17 00:00:00 2001 From: Sahil Yeole Date: Wed, 9 Aug 2023 17:51:23 +0530 Subject: [PATCH 6/6] add check for seat0 active user Signed-off-by: Sahil Yeole --- src/platform/linux.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/platform/linux.rs b/src/platform/linux.rs index cda26ea10..ab8d53732 100644 --- a/src/platform/linux.rs +++ b/src/platform/linux.rs @@ -1073,11 +1073,13 @@ 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) { - return; + if self.sid == seat0_values[0] { + 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;