From 2051bee3cfe1d7ece93609c01eb753af21972d1c Mon Sep 17 00:00:00 2001 From: fufesou Date: Sun, 16 Jul 2023 08:29:26 +0800 Subject: [PATCH 1/4] fix, wayland, change resolutions Signed-off-by: fufesou --- libs/hbb_common/src/config.rs | 6 +++--- src/server/video_service.rs | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/libs/hbb_common/src/config.rs b/libs/hbb_common/src/config.rs index cba3c0ca3..1712015a7 100644 --- a/libs/hbb_common/src/config.rs +++ b/libs/hbb_common/src/config.rs @@ -399,10 +399,10 @@ impl Config2 { pub fn load_path( file: PathBuf, ) -> T { - let cfg = match confy::load_path(file) { + let cfg = match confy::load_path(&file) { Ok(config) => config, Err(err) => { - log::error!("Failed to load config: {}", err); + log::error!("Failed to load config '{}': {}", file.as_os_str().to_str().unwrap_or(""), err); T::default() } }; @@ -958,7 +958,7 @@ impl PeerConfig { config } Err(err) => { - log::error!("Failed to load config: {}", err); + log::error!("Failed to load peer config '{}': {}", id, err); Default::default() } } diff --git a/src/server/video_service.rs b/src/server/video_service.rs index 9478a19f0..e074da310 100644 --- a/src/server/video_service.rs +++ b/src/server/video_service.rs @@ -623,6 +623,8 @@ fn run(sp: GenericService) -> ResultType<()> { bail!("SWITCH"); } if c.current != *CURRENT_DISPLAY.lock().unwrap() { + #[cfg(target_os = "linux")] + wayland::clear(); *SWITCH.lock().unwrap() = true; bail!("SWITCH"); } @@ -657,6 +659,8 @@ fn run(sp: GenericService) -> ResultType<()> { if let Some(msg_out) = check_get_displays_changed_msg() { sp.send(msg_out); log::info!("Displays changed"); + #[cfg(target_os = "linux")] + wayland::clear(); *SWITCH.lock().unwrap() = true; bail!("SWITCH"); } @@ -734,6 +738,8 @@ fn run(sp: GenericService) -> ResultType<()> { Err(err) => { if check_display_changed(c.ndisplay, c.current, c.width, c.height) { log::info!("Displays changed"); + #[cfg(target_os = "linux")] + wayland::clear(); *SWITCH.lock().unwrap() = true; bail!("SWITCH"); } From 7bc98ee4342a379bb38bba9de60d2d2c5a2d9426 Mon Sep 17 00:00:00 2001 From: fufesou Date: Sun, 16 Jul 2023 08:41:32 +0800 Subject: [PATCH 2/4] simple refactor Signed-off-by: fufesou --- src/server/video_service.rs | 14 ++++++-------- src/server/wayland.rs | 18 +----------------- 2 files changed, 7 insertions(+), 25 deletions(-) diff --git a/src/server/video_service.rs b/src/server/video_service.rs index e074da310..9d6968c99 100644 --- a/src/server/video_service.rs +++ b/src/server/video_service.rs @@ -503,7 +503,7 @@ fn run(sp: GenericService) -> ResultType<()> { #[cfg(not(any(target_os = "android", target_os = "ios")))] let _wake_lock = get_wake_lock(); - // ensure_inited() is needed because release_resource() may be called. + // ensure_inited() is needed because clear() may be called. #[cfg(target_os = "linux")] super::wayland::ensure_inited()?; #[cfg(windows)] @@ -624,7 +624,7 @@ fn run(sp: GenericService) -> ResultType<()> { } if c.current != *CURRENT_DISPLAY.lock().unwrap() { #[cfg(target_os = "linux")] - wayland::clear(); + super::wayland::clear(); *SWITCH.lock().unwrap() = true; bail!("SWITCH"); } @@ -660,7 +660,7 @@ fn run(sp: GenericService) -> ResultType<()> { sp.send(msg_out); log::info!("Displays changed"); #[cfg(target_os = "linux")] - wayland::clear(); + super::wayland::clear(); *SWITCH.lock().unwrap() = true; bail!("SWITCH"); } @@ -729,7 +729,7 @@ fn run(sp: GenericService) -> ResultType<()> { // Do not reset the capturer for now, as it will cause the prompt to show every few minutes. // https://github.com/rustdesk/rustdesk/issues/4276 // - // super::wayland::release_resource(); + // super::wayland::clear(); // bail!("Wayland capturer none 100 times, try restart capture"); } } @@ -739,7 +739,7 @@ fn run(sp: GenericService) -> ResultType<()> { if check_display_changed(c.ndisplay, c.current, c.width, c.height) { log::info!("Displays changed"); #[cfg(target_os = "linux")] - wayland::clear(); + super::wayland::clear(); *SWITCH.lock().unwrap() = true; bail!("SWITCH"); } @@ -784,9 +784,7 @@ fn run(sp: GenericService) -> ResultType<()> { } #[cfg(target_os = "linux")] - if !scrap::is_x11() { - super::wayland::release_resource(); - } + super::wayland::clear(); Ok(()) } diff --git a/src/server/wayland.rs b/src/server/wayland.rs index 10b93afce..efed83936 100644 --- a/src/server/wayland.rs +++ b/src/server/wayland.rs @@ -186,21 +186,6 @@ pub(super) async fn check_init() -> ResultType<()> { Ok(()) } -pub fn clear() { - if scrap::is_x11() { - return; - } - - let mut lock = CAP_DISPLAY_INFO.write().unwrap(); - if *lock != 0 { - unsafe { - let cap_display_info = Box::from_raw(*lock as *mut CapDisplayInfo); - let _ = Box::from_raw(cap_display_info.capturer.0); - } - *lock = 0; - } -} - pub(super) async fn get_displays() -> ResultType<(usize, Vec)> { check_init().await?; let addr = *CAP_DISPLAY_INFO.read().unwrap(); @@ -230,8 +215,7 @@ pub(super) fn get_primary() -> ResultType { } } -#[allow(dead_code)] -pub(super) fn release_resource() { +pub fn clear() { if scrap::is_x11() { return; } From fa0b1436c2099a78cb2e9788de8e01185b9401d4 Mon Sep 17 00:00:00 2001 From: fufesou Date: Sun, 16 Jul 2023 09:35:11 +0800 Subject: [PATCH 3/4] try fix CI Signed-off-by: fufesou --- libs/scrap/Cargo.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libs/scrap/Cargo.toml b/libs/scrap/Cargo.toml index ffce4ab97..4956403a9 100644 --- a/libs/scrap/Cargo.toml +++ b/libs/scrap/Cargo.toml @@ -15,7 +15,6 @@ mediacodec = ["ndk"] linux-pkg-config = ["dep:pkg-config"] [dependencies] -block = "0.1" cfg-if = "1.0" num_cpus = "1.15" lazy_static = "1.4" @@ -27,6 +26,9 @@ version = "0.3" default-features = true features = ["dxgi", "dxgi1_2", "dxgi1_5", "d3d11", "winuser", "winerror", "errhandlingapi", "libloaderapi"] +[target.'cfg(target_os = "macos")'.dependencies] +block = "0.1" + [target.'cfg(target_os = "android")'.dependencies] android_logger = "0.13" jni = "0.21" From 77231f6538603ba093d0bfcbbee85bf065d1d324 Mon Sep 17 00:00:00 2001 From: fufesou Date: Sun, 16 Jul 2023 09:52:32 +0800 Subject: [PATCH 4/4] simple refact Signed-off-by: fufesou --- libs/hbb_common/src/config.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/hbb_common/src/config.rs b/libs/hbb_common/src/config.rs index 1712015a7..975abf80a 100644 --- a/libs/hbb_common/src/config.rs +++ b/libs/hbb_common/src/config.rs @@ -402,7 +402,7 @@ pub fn load_path config, Err(err) => { - log::error!("Failed to load config '{}': {}", file.as_os_str().to_str().unwrap_or(""), err); + log::error!("Failed to load config '{}': {}", file.display(), err); T::default() } };