From 7009d4fa7bfd61c63eeb78fcc06e14e8908fcd0e Mon Sep 17 00:00:00 2001 From: rustdesk Date: Sun, 19 Mar 2023 20:01:44 +0800 Subject: [PATCH] fix #3129 --- src/platform/linux.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/platform/linux.rs b/src/platform/linux.rs index 47184e796..bde2a5c58 100644 --- a/src/platform/linux.rs +++ b/src/platform/linux.rs @@ -320,6 +320,20 @@ pub fn start_os_service() { let mut last_restart = Instant::now(); while running.load(Ordering::SeqCst) { let (cur_uid, cur_user) = get_active_user_id_name(); + + // for fixing https://github.com/rustdesk/rustdesk/issues/3129 to avoid too much dbus calling, + // though duplicate logic here with should_start_server + if !(cur_uid != *uid && !cur_uid.is_empty()) { + let cm = get_cm(); + if !(!cm + && ((cm0 && last_restart.elapsed().as_secs() > 60) + || last_restart.elapsed().as_secs() > 3600)) + { + std::thread::sleep(Duration::from_millis(500)); + continue; + } + } + let is_wayland = current_is_wayland(); if cur_user == "root" || !is_wayland {