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 } }