From 32c349dd8b34697c7be617c178e42c9d7f6fa948 Mon Sep 17 00:00:00 2001 From: dignow Date: Sun, 9 Jul 2023 00:41:23 +0800 Subject: [PATCH] tmp commit Signed-off-by: dignow --- flutter/lib/desktop/pages/server_page.dart | 1 - flutter/lib/models/native_model.dart | 2 +- src/flutter.rs | 18 ++++++++++++++++-- src/flutter_ffi.rs | 6 +++--- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/flutter/lib/desktop/pages/server_page.dart b/flutter/lib/desktop/pages/server_page.dart index fe6922938..25be23142 100644 --- a/flutter/lib/desktop/pages/server_page.dart +++ b/flutter/lib/desktop/pages/server_page.dart @@ -40,7 +40,6 @@ class _DesktopServerPageState extends State @override void dispose() { - bind.cmClear(); windowManager.removeListener(this); super.dispose(); } diff --git a/flutter/lib/models/native_model.dart b/flutter/lib/models/native_model.dart index 309c30f68..51940bb18 100644 --- a/flutter/lib/models/native_model.dart +++ b/flutter/lib/models/native_model.dart @@ -233,7 +233,7 @@ class PlatformFFI { '_appType:$_appType,info1-id:$id,info2-name:$name,dir:$_dir'); } if (desktopType == DesktopType.cm) { - await _ffiBind.cmStartListenIpcThread(); + await _ffiBind.cmInit(); } await _ffiBind.mainDeviceId(id: id); await _ffiBind.mainDeviceName(name: name); diff --git a/src/flutter.rs b/src/flutter.rs index 6159a6de7..d37e7d56c 100644 --- a/src/flutter.rs +++ b/src/flutter.rs @@ -910,7 +910,7 @@ pub mod connection_manager { #[inline] #[cfg(not(any(target_os = "android", target_os = "ios")))] - pub fn start_listen_ipc_thread() { + fn start_listen_ipc_thread() { start_listen_ipc(true); } @@ -931,8 +931,22 @@ pub mod connection_manager { } } - #[cfg(target_os = "windows")] + extern "C" fn cm_clear_hook() { + #[cfg(target_os = "windows")] + crate::privacy_win_mag::stop(); + } + + #[inline] + pub fn cm_init() { + #[cfg(not(any(target_os = "android", target_os = "ios")))] + start_listen_ipc_thread(); + #[cfg(target_os = "windows")] + shutdown_hooks::add_shutdown_hook(cm_clear_hook); + } + + #[inline] pub fn cm_clear() { + #[cfg(target_os = "windows")] crate::privacy_win_mag::stop(); } diff --git a/src/flutter_ffi.rs b/src/flutter_ffi.rs index 3703a0834..3730a1b44 100644 --- a/src/flutter_ffi.rs +++ b/src/flutter_ffi.rs @@ -1448,13 +1448,13 @@ pub fn main_use_texture_render() -> SyncReturn { } } -pub fn cm_start_listen_ipc_thread() { +pub fn cm_init() { #[cfg(not(any(target_os = "android", target_os = "ios")))] - crate::flutter::connection_manager::start_listen_ipc_thread(); + crate::flutter::connection_manager::cm_init(); } pub fn cm_clear() { - #[cfg(target_os = "windows")] + #[cfg(not(any(target_os = "android", target_os = "ios")))] crate::flutter::connection_manager::cm_clear(); }