fix build linux

Signed-off-by: dignow <linlong1265@gmail.com>
This commit is contained in:
dignow 2023-10-18 08:07:00 +08:00
parent c4f09b5598
commit a32e740242
5 changed files with 27 additions and 18 deletions

View File

@ -1,4 +1,4 @@
#[cfg(not(any(target_os = "android", target_os = "ios")))] #[cfg(windows)]
use crate::client::translate; use crate::client::translate;
#[cfg(not(debug_assertions))] #[cfg(not(debug_assertions))]
#[cfg(not(any(target_os = "android", target_os = "ios")))] #[cfg(not(any(target_os = "android", target_os = "ios")))]

View File

@ -151,7 +151,7 @@ fn displays_to_msg(displays: Vec<DisplayInfo>) -> Message {
} }
fn check_get_displays_changed_msg() -> Option<Message> { fn check_get_displays_changed_msg() -> Option<Message> {
check_update_displays(try_get_displays().ok()?); check_update_displays(&try_get_displays().ok()?);
let displays = SYNC_DISPLAYS.lock().unwrap().get_update_sync_displays()?; let displays = SYNC_DISPLAYS.lock().unwrap().get_update_sync_displays()?;
Some(displays_to_msg(displays)) Some(displays_to_msg(displays))
} }
@ -225,9 +225,14 @@ pub(super) fn get_original_resolution(
.into() .into()
} }
#[cfg(target_os = "linux")]
pub(super) fn get_sync_displays() -> Vec<DisplayInfo> {
SYNC_DISPLAYS.lock().unwrap().displays.clone()
}
// Display to DisplayInfo // Display to DisplayInfo
// The DisplayInfo is be sent to the peer. // The DisplayInfo is be sent to the peer.
fn check_update_displays(all: Vec<Display>) { pub(super) fn check_update_displays(all: &Vec<Display>) {
let displays = all let displays = all
.iter() .iter()
.map(|d| { .map(|d| {
@ -264,7 +269,7 @@ pub async fn update_get_sync_displays() -> ResultType<Vec<DisplayInfo>> {
return super::wayland::get_displays().await; return super::wayland::get_displays().await;
} }
} }
check_update_displays(try_get_displays()?); check_update_displays(&try_get_displays()?);
Ok(SYNC_DISPLAYS.lock().unwrap().displays.clone()) Ok(SYNC_DISPLAYS.lock().unwrap().displays.clone())
} }

View File

@ -407,7 +407,7 @@ fn run(vs: VideoService) -> ResultType<()> {
#[cfg(target_os = "linux")] #[cfg(target_os = "linux")]
super::wayland::ensure_inited()?; super::wayland::ensure_inited()?;
#[cfg(target_os = "linux")] #[cfg(target_os = "linux")]
let wayland_call_on_ret = SimpleCallOnReturn { let _wayland_call_on_ret = SimpleCallOnReturn {
b: true, b: true,
f: Box::new(|| { f: Box::new(|| {
super::wayland::clear(); super::wayland::clear();

View File

@ -84,7 +84,6 @@ impl TraitCapturer for CapturerPtr {
struct CapDisplayInfo { struct CapDisplayInfo {
rects: Vec<((i32, i32), usize, usize)>, rects: Vec<((i32, i32), usize, usize)>,
displays: Vec<DisplayInfo>, displays: Vec<DisplayInfo>,
num: usize,
primary: usize, primary: usize,
current: usize, current: usize,
capturer: CapturerPtr, capturer: CapturerPtr,
@ -146,7 +145,8 @@ pub(super) async fn check_init() -> ResultType<()> {
let num = all.len(); let num = all.len();
let primary = super::display_service::get_primary_2(&all); let primary = super::display_service::get_primary_2(&all);
let current = primary; let current = primary;
let mut displays = super::display_service::to_display_info(&all); super::display_service::check_update_displays(&all);
let mut displays = super::display_service::get_sync_displays();
for display in displays.iter_mut() { for display in displays.iter_mut() {
display.cursor_embedded = is_cursor_embedded(); display.cursor_embedded = is_cursor_embedded();
} }
@ -173,10 +173,13 @@ pub(super) async fn check_init() -> ResultType<()> {
Some(result) if !result.is_empty() => { Some(result) if !result.is_empty() => {
let resolution: Vec<&str> = result.split(" ").collect(); let resolution: Vec<&str> = result.split(" ").collect();
let w: i32 = resolution[0].parse().unwrap_or(origin.0 + width as i32); let w: i32 = resolution[0].parse().unwrap_or(origin.0 + width as i32);
let h: i32 = resolution[2].trim_end_matches(",").parse().unwrap_or(origin.1 + height as i32); let h: i32 = resolution[2]
.trim_end_matches(",")
.parse()
.unwrap_or(origin.1 + height as i32);
(w, h) (w, h)
} }
_ => (origin.0 + width as i32, origin.1 + height as i32) _ => (origin.0 + width as i32, origin.1 + height as i32),
}; };
minx = 0; minx = 0;
@ -191,7 +194,6 @@ pub(super) async fn check_init() -> ResultType<()> {
let cap_display_info = Box::into_raw(Box::new(CapDisplayInfo { let cap_display_info = Box::into_raw(Box::new(CapDisplayInfo {
rects, rects,
displays, displays,
num,
primary, primary,
current, current,
capturer, capturer,
@ -273,7 +275,6 @@ pub(super) fn get_capturer() -> ResultType<super::video_service::CapturerInfo> {
origin: rect.0, origin: rect.0,
width: rect.1, width: rect.1,
height: rect.2, height: rect.2,
ndisplay: cap_display_info.num,
current: cap_display_info.current, current: cap_display_info.current,
privacy_mode_id: 0, privacy_mode_id: 0,
_capturer_privacy_mode_id: 0, _capturer_privacy_mode_id: 0,

View File

@ -1,9 +1,12 @@
use crate::{client::translate, ipc::Data}; use crate::client::translate;
use hbb_common::{allow_err, log, tokio}; #[cfg(windows)]
use std::{ use crate::ipc::Data;
sync::{Arc, Mutex}, #[cfg(windows)]
time::Duration, use hbb_common::tokio;
}; use hbb_common::{allow_err, log};
use std::sync::{Arc, Mutex};
#[cfg(windows)]
use std::time::Duration;
pub fn start_tray() { pub fn start_tray() {
allow_err!(make_tray()); allow_err!(make_tray());