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>,
}
unsafe impl Send for HotkeyState {}
pub fn setup(app_handle: tauri::AppHandle) {
let state = Arc::new(Mutex::new(HotkeyState::default()));
let manager = match GlobalHotKeyManager::new() {
Ok(manager) => manager,
Err(err) => {
@ -43,7 +44,7 @@ pub fn setup(app_handle: tauri::AppHandle) {
eprintln!("Error registering initial shortcut: {:?}", e);
}
let state_clone = state.clone();
let state_clone = Arc::clone(&state);
app_handle.listen("update-shortcut", move |event| {
let payload_str = event.payload().replace("\\\"", "\"");
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| {
let payload_str = event.payload().to_string();
unregister_current_hotkey(&state_clone);