From 6250a3e84be9690ce5534853d0e4d5529605d111 Mon Sep 17 00:00:00 2001 From: PandaDEV <70103896+0PandaDEV@users.noreply.github.com> Date: Fri, 15 Nov 2024 23:45:24 +1000 Subject: [PATCH] fix: windows build error --- src-tauri/src/api/hotkeys.rs | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src-tauri/src/api/hotkeys.rs b/src-tauri/src/api/hotkeys.rs index b4d9f33..fc33e73 100644 --- a/src-tauri/src/api/hotkeys.rs +++ b/src-tauri/src/api/hotkeys.rs @@ -4,18 +4,18 @@ use global_hotkey::{ GlobalHotKeyEvent, GlobalHotKeyManager, HotKeyState, }; use std::str::FromStr; -use std::sync::Mutex; +use std::cell::RefCell; use tauri::{AppHandle, Manager, Listener}; -lazy_static::lazy_static! { - static ref HOTKEY_MANAGER: Mutex> = Mutex::new(None); +thread_local! { + static HOTKEY_MANAGER: RefCell> = RefCell::new(None); } pub fn setup(app_handle: tauri::AppHandle) { let app_handle_clone = app_handle.clone(); let manager = GlobalHotKeyManager::new().expect("Failed to initialize hotkey manager"); - *HOTKEY_MANAGER.lock().unwrap() = Some(manager); + HOTKEY_MANAGER.with(|m| *m.borrow_mut() = Some(manager)); let rt = app_handle.state::(); let initial_keybind = rt.block_on(crate::api::database::get_keybind(app_handle_clone.clone())) @@ -33,9 +33,11 @@ pub fn setup(app_handle: tauri::AppHandle) { let payload_str = event.payload().to_string(); if let Ok(old_hotkey) = parse_hotkey(&initial_shortcut_for_update) { - if let Some(manager) = HOTKEY_MANAGER.lock().unwrap().as_ref() { - let _ = manager.unregister(old_hotkey); - } + HOTKEY_MANAGER.with(|manager| { + if let Some(manager) = manager.borrow().as_ref() { + let _ = manager.unregister(old_hotkey); + } + }); } if let Err(e) = register_shortcut(&payload_str) { @@ -47,9 +49,11 @@ pub fn setup(app_handle: tauri::AppHandle) { let payload_str = event.payload().to_string(); if let Ok(old_hotkey) = parse_hotkey(&initial_shortcut_for_save) { - if let Some(manager) = HOTKEY_MANAGER.lock().unwrap().as_ref() { - let _ = manager.unregister(old_hotkey); - } + HOTKEY_MANAGER.with(|manager| { + if let Some(manager) = manager.borrow().as_ref() { + let _ = manager.unregister(old_hotkey); + } + }); } if let Err(e) = register_shortcut(&payload_str) { @@ -77,10 +81,12 @@ pub fn setup(app_handle: tauri::AppHandle) { fn register_shortcut(shortcut: &str) -> Result<(), Box> { let hotkey = parse_hotkey(shortcut)?; - if let Some(manager) = HOTKEY_MANAGER.lock().unwrap().as_ref() { - manager.register(hotkey)?; - } - Ok(()) + HOTKEY_MANAGER.with(|manager| { + if let Some(manager) = manager.borrow().as_ref() { + manager.register(hotkey)?; + } + Ok(()) + }) } fn parse_hotkey(shortcut: &str) -> Result> {