From c358399eca055bfdc80e34f554c1d930684c519c Mon Sep 17 00:00:00 2001 From: fufesou <13586388+fufesou@users.noreply.github.com> Date: Thu, 12 Sep 2024 14:44:40 +0800 Subject: [PATCH] refact: reduce try_get_displays() on login (#9333) * refact: reduce try_get_displays() on login Signed-off-by: fufesou * Function rename Signed-off-by: fufesou --------- Signed-off-by: fufesou --- src/server/connection.rs | 34 +++++++++++++--------------------- src/server/display_service.rs | 8 ++++++-- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/server/connection.rs b/src/server/connection.rs index 3a2b0a22e..7181478b3 100644 --- a/src/server/connection.rs +++ b/src/server/connection.rs @@ -1279,29 +1279,9 @@ impl Connection { self.send(msg_out).await; } - #[cfg(not(any(target_os = "android", target_os = "ios")))] - { - #[cfg(not(windows))] - let displays = display_service::try_get_displays(); - #[cfg(windows)] - let displays = display_service::try_get_displays_add_amyuni_headless(); - pi.resolutions = Some(SupportedResolutions { - resolutions: displays - .map(|displays| { - displays - .get(self.display_idx) - .map(|d| crate::platform::resolutions(&d.name())) - .unwrap_or(vec![]) - }) - .unwrap_or(vec![]), - ..Default::default() - }) - .into(); - } - try_activate_screen(); - match super::display_service::update_get_sync_displays().await { + match super::display_service::update_get_sync_displays_on_login().await { Err(err) => { res.set_error(format!("{}", err)); } @@ -1314,6 +1294,18 @@ impl Connection { } pi.displays = displays; pi.current_display = self.display_idx as _; + #[cfg(not(any(target_os = "android", target_os = "ios")))] + { + pi.resolutions = Some(SupportedResolutions { + resolutions: pi + .displays + .get(self.display_idx) + .map(|d| crate::platform::resolutions(&d.name)) + .unwrap_or(vec![]), + ..Default::default() + }) + .into(); + } res.set_peer_info(pi); sub_service = true; diff --git a/src/server/display_service.rs b/src/server/display_service.rs index e099e25a0..98b42a5fa 100644 --- a/src/server/display_service.rs +++ b/src/server/display_service.rs @@ -344,14 +344,18 @@ pub fn is_inited_msg() -> Option { None } -pub async fn update_get_sync_displays() -> ResultType> { +pub async fn update_get_sync_displays_on_login() -> ResultType> { #[cfg(target_os = "linux")] { if !is_x11() { return super::wayland::get_displays().await; } } - check_update_displays(&try_get_displays()?); + #[cfg(not(windows))] + let displays = display_service::try_get_displays(); + #[cfg(windows)] + let displays = display_service::try_get_displays_add_amyuni_headless(); + check_update_displays(&displays?); Ok(SYNC_DISPLAYS.lock().unwrap().displays.clone()) }