From 84ab9ba48e77fb5bfc63f15e2819dd7f1c1f7a0e Mon Sep 17 00:00:00 2001 From: fufesou Date: Fri, 28 Apr 2023 13:19:48 +0800 Subject: [PATCH] fix plugout virtual monitor Signed-off-by: fufesou --- src/server/video_service.rs | 4 +++- src/virtual_display_manager.rs | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/server/video_service.rs b/src/server/video_service.rs index f7a6625ec..145a0a89c 100644 --- a/src/server/video_service.rs +++ b/src/server/video_service.rs @@ -927,7 +927,9 @@ fn try_get_displays() -> ResultType> { } } else if displays.len() > 1 { // If more than one displays exists, close RustDeskVirtualDisplay - let _res = virtual_display_manager::plug_in_headless(); + if virtual_display_manager::plug_out_headless() { + displays = Display::all()?; + } } Ok(displays) } diff --git a/src/virtual_display_manager.rs b/src/virtual_display_manager.rs index 82328915e..08cc0d485 100644 --- a/src/virtual_display_manager.rs +++ b/src/virtual_display_manager.rs @@ -59,12 +59,15 @@ pub fn plug_in_headless() -> ResultType<()> { Ok(()) } -pub fn plug_out_headless() { +pub fn plug_out_headless() -> bool { let mut manager = VIRTUAL_DISPLAY_MANAGER.lock().unwrap(); if let Some(index) = manager.headless_index.take() { if let Err(e) = virtual_display::plug_out_monitor(index) { log::error!("Plug out monitor failed {}", e); } + true + } else { + false } }