Merge pull request #4220 from fufesou/fix/win_headless

fix plugout virtual monitor
This commit is contained in:
RustDesk 2023-04-28 13:27:45 +08:00 committed by GitHub
commit c64d0a5424
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 3 deletions

View File

@ -274,7 +274,7 @@ fn create_capturer(
fn ensure_close_virtual_device() -> ResultType<()> { fn ensure_close_virtual_device() -> ResultType<()> {
let num_displays = Display::all()?.len(); let num_displays = Display::all()?.len();
if num_displays > 1 { if num_displays > 1 {
virtual_display_manager::plug_out_headless(); let _res = virtual_display_manager::plug_out_headless();
} }
Ok(()) Ok(())
} }
@ -927,7 +927,9 @@ fn try_get_displays() -> ResultType<Vec<Display>> {
} }
} else if displays.len() > 1 { } else if displays.len() > 1 {
// If more than one displays exists, close RustDeskVirtualDisplay // 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) Ok(displays)
} }

View File

@ -59,12 +59,15 @@ pub fn plug_in_headless() -> ResultType<()> {
Ok(()) Ok(())
} }
pub fn plug_out_headless() { pub fn plug_out_headless() -> bool {
let mut manager = VIRTUAL_DISPLAY_MANAGER.lock().unwrap(); let mut manager = VIRTUAL_DISPLAY_MANAGER.lock().unwrap();
if let Some(index) = manager.headless_index.take() { if let Some(index) = manager.headless_index.take() {
if let Err(e) = virtual_display::plug_out_monitor(index) { if let Err(e) = virtual_display::plug_out_monitor(index) {
log::error!("Plug out monitor failed {}", e); log::error!("Plug out monitor failed {}", e);
} }
true
} else {
false
} }
} }