mirror of
https://github.com/rustdesk/rustdesk.git
synced 2024-11-28 07:39:36 +08:00
Clean remapped keycodes when breakdown
This commit is contained in:
parent
b59f87f825
commit
6ffa2cacb1
@ -7,6 +7,8 @@ pub mod macos;
|
||||
use crate::{config::Config, log};
|
||||
use std::process::exit;
|
||||
|
||||
static mut GLOBAL_CALLBACK: Option<Box<dyn Fn()>> = None;
|
||||
|
||||
extern "C" fn breakdown_signal_handler(sig: i32) {
|
||||
let mut stack = vec![];
|
||||
backtrace::trace(|frame| {
|
||||
@ -41,11 +43,20 @@ extern "C" fn breakdown_signal_handler(sig: i32) {
|
||||
)
|
||||
.ok();
|
||||
}
|
||||
unsafe {
|
||||
if let Some(callback) = &GLOBAL_CALLBACK {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
|
||||
pub fn register_breakdown_handler() {
|
||||
pub fn register_breakdown_handler<T>(callback: T)
|
||||
where
|
||||
T: Fn() + 'static,
|
||||
{
|
||||
unsafe {
|
||||
GLOBAL_CALLBACK = Some(Box::new(callback));
|
||||
libc::signal(libc::SIGSEGV, breakdown_signal_handler as _);
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::platform::breakdown_callback;
|
||||
use hbb_common::log;
|
||||
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
||||
use hbb_common::platform::register_breakdown_handler;
|
||||
@ -38,7 +39,7 @@ pub fn core_main() -> Option<Vec<String>> {
|
||||
i += 1;
|
||||
}
|
||||
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
||||
register_breakdown_handler();
|
||||
register_breakdown_handler(breakdown_callback);
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(feature = "flutter")]
|
||||
{
|
||||
|
@ -17,6 +17,7 @@ pub mod delegate;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub mod linux;
|
||||
|
||||
use crate::input_service::clear_remapped_keycode;
|
||||
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
||||
use hbb_common::{message_proto::CursorData, ResultType};
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
@ -41,6 +42,11 @@ pub fn is_xfce() -> bool {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn breakdown_callback() {
|
||||
#[cfg(target_os = "linux")]
|
||||
clear_remapped_keycode()
|
||||
}
|
||||
|
||||
// Android
|
||||
#[cfg(target_os = "android")]
|
||||
pub fn get_active_username() -> String {
|
||||
|
Loading…
Reference in New Issue
Block a user