diff --git a/src/client/file_trait.rs b/src/client/file_trait.rs index d2f7b1648..b94177c51 100644 --- a/src/client/file_trait.rs +++ b/src/client/file_trait.rs @@ -22,9 +22,9 @@ pub trait FileManager: Interface { #[cfg(any(target_os = "android", target_os = "ios", feature = "cli"))] fn read_dir(&self, path: &str, include_hidden: bool) -> String { - use crate::common::make_fd_to_json; + use crate::flutter::make_fd_to_json; match fs::read_dir(&fs::get_path(path), include_hidden) { - Ok(fd) => make_fd_to_json(fd), + Ok(fd) => make_fd_to_json(fd.id, fd.path, &fd.entries), Err(_) => "".into(), } } diff --git a/src/flutter.rs b/src/flutter.rs index 53b79949a..a3c7ea70f 100644 --- a/src/flutter.rs +++ b/src/flutter.rs @@ -340,6 +340,7 @@ pub fn session_start_(id: &str, event_stream: StreamSink) -> ResultTy pub mod connection_manager { use std::collections::HashMap; + use hbb_common::log; #[cfg(any(target_os = "android"))] use scrap::android::call_main_service_set_by_name; @@ -410,9 +411,18 @@ pub mod connection_manager { } #[cfg(target_os = "android")] - pub fn start_channel(rx: UnboundedReceiver, tx: UnboundedSender) { + use hbb_common::tokio::sync::mpsc::{UnboundedReceiver,UnboundedSender}; + + #[cfg(target_os = "android")] + pub fn start_channel( + rx: UnboundedReceiver, + tx: UnboundedSender, + ) { use crate::ui_cm_interface::start_listen; - std::thread::spawn(move || start_listen(rx, tx)); + let cm = crate::ui_cm_interface::ConnectionManager { + ui_handler: FlutterHandler {}, + }; + std::thread::spawn(move || start_listen(cm, rx, tx)); } } diff --git a/src/flutter_ffi.rs b/src/flutter_ffi.rs index 2a41264f0..5da94c3c1 100644 --- a/src/flutter_ffi.rs +++ b/src/flutter_ffi.rs @@ -754,7 +754,7 @@ pub fn main_set_home_dir(home: String) { pub fn main_stop_service() { #[cfg(target_os = "android")] { - Config::set_option("stop-service".into(), "Y".into()); + config::Config::set_option("stop-service".into(), "Y".into()); crate::rendezvous_mediator::RendezvousMediator::restart(); } } @@ -762,7 +762,7 @@ pub fn main_stop_service() { pub fn main_start_service() { #[cfg(target_os = "android")] { - Config::set_option("stop-service".into(), "".into()); + config::Config::set_option("stop-service".into(), "".into()); crate::rendezvous_mediator::RendezvousMediator::restart(); } #[cfg(not(target_os = "android"))] diff --git a/src/ui_cm_interface.rs b/src/ui_cm_interface.rs index 8a26a9558..b9045532b 100644 --- a/src/ui_cm_interface.rs +++ b/src/ui_cm_interface.rs @@ -114,13 +114,17 @@ impl ConnectionManager { CLIENTS.write().unwrap().remove(&id); #[cfg(any(target_os = "android"))] - if clients + if CLIENTS + .read() + .unwrap() .iter() .filter(|(_k, v)| !v.is_file_transfer) .next() .is_none() { - if let Err(e) = call_main_service_set_by_name("stop_capture", None, None) { + if let Err(e) = + scrap::android::call_main_service_set_by_name("stop_capture", None, None) + { log::debug!("stop_capture err:{}", e); } } @@ -312,7 +316,7 @@ pub async fn start_ipc(cm: ConnectionManager) { #[cfg(target_os = "android")] #[tokio::main(flavor = "current_thread")] -pub async fn start_listen(mut rx: UnboundedReceiver, tx: UnboundedSender) { +pub async fn start_listen(cm: ConnectionManager, mut rx: mpsc::UnboundedReceiver, tx: mpsc::UnboundedSender) { let mut current_id = 0; let mut write_jobs: Vec = Vec::new(); loop { @@ -332,7 +336,7 @@ pub async fn start_listen(mut rx: UnboundedReceiver, tx: UnboundedSender { current_id = id; - on_login( + cm.add_connection( id, is_file_transfer, port_forward, @@ -348,7 +352,7 @@ pub async fn start_listen(mut rx: UnboundedReceiver, tx: UnboundedSender { - cm.new_message(conn_id, text); + cm.new_message(current_id, text); } Some(Data::FS(fs)) => { handle_fs(fs, &mut write_jobs, &tx).await; @@ -362,7 +366,7 @@ pub async fn start_listen(mut rx: UnboundedReceiver, tx: UnboundedSender {} } } - remove_connection(current_id); + cm.remove_connection(current_id); } async fn handle_fs(fs: ipc::FS, write_jobs: &mut Vec, tx: &UnboundedSender) { diff --git a/src/ui_interface.rs b/src/ui_interface.rs index a8e3be980..b8d59ac8f 100644 --- a/src/ui_interface.rs +++ b/src/ui_interface.rs @@ -372,10 +372,11 @@ pub fn get_mouse_time() -> f64 { return res; } -#[cfg(not(any(target_os = "android", target_os = "ios")))] pub fn check_mouse_time() { - let sender = SENDER.lock().unwrap(); - allow_err!(sender.send(ipc::Data::MouseMoveTime(0))); + #[cfg(not(any(target_os = "android", target_os = "ios")))]{ + let sender = SENDER.lock().unwrap(); + allow_err!(sender.send(ipc::Data::MouseMoveTime(0))); + } } pub fn get_connect_status() -> Status {