fix: improve thread safety in hotkey management

This commit is contained in:
pandadev 2025-01-29 17:39:10 +01:00
parent 66df55017f
commit 2d3732b2f2
No known key found for this signature in database
GPG key ID: C39629DACB8E762F

View file

@ -18,9 +18,10 @@ struct HotkeyState {
registered_hotkey: Option<HotKey>, registered_hotkey: Option<HotKey>,
} }
unsafe impl Send for HotkeyState {}
pub fn setup(app_handle: tauri::AppHandle) { pub fn setup(app_handle: tauri::AppHandle) {
let state = Arc::new(Mutex::new(HotkeyState::default())); let state = Arc::new(Mutex::new(HotkeyState::default()));
let manager = match GlobalHotKeyManager::new() { let manager = match GlobalHotKeyManager::new() {
Ok(manager) => manager, Ok(manager) => manager,
Err(err) => { Err(err) => {
@ -43,7 +44,7 @@ pub fn setup(app_handle: tauri::AppHandle) {
eprintln!("Error registering initial shortcut: {:?}", e); eprintln!("Error registering initial shortcut: {:?}", e);
} }
let state_clone = state.clone(); let state_clone = Arc::clone(&state);
app_handle.listen("update-shortcut", move |event| { app_handle.listen("update-shortcut", move |event| {
let payload_str = event.payload().replace("\\\"", "\""); let payload_str = event.payload().replace("\\\"", "\"");
let trimmed_str = payload_str.trim_matches('"'); let trimmed_str = payload_str.trim_matches('"');
@ -55,7 +56,7 @@ pub fn setup(app_handle: tauri::AppHandle) {
} }
}); });
let state_clone = state.clone(); let state_clone = Arc::clone(&state);
app_handle.listen("save_keybind", move |event| { app_handle.listen("save_keybind", move |event| {
let payload_str = event.payload().to_string(); let payload_str = event.payload().to_string();
unregister_current_hotkey(&state_clone); unregister_current_hotkey(&state_clone);