Skip to content

Commit 6250a3e

Browse files
committed
fix: windows build error
1 parent b712d23 commit 6250a3e

1 file changed

Lines changed: 20 additions & 14 deletions

File tree

src-tauri/src/api/hotkeys.rs

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@ use global_hotkey::{
44
GlobalHotKeyEvent, GlobalHotKeyManager, HotKeyState,
55
};
66
use std::str::FromStr;
7-
use std::sync::Mutex;
7+
use std::cell::RefCell;
88
use tauri::{AppHandle, Manager, Listener};
99

10-
lazy_static::lazy_static! {
11-
static ref HOTKEY_MANAGER: Mutex<Option<GlobalHotKeyManager>> = Mutex::new(None);
10+
thread_local! {
11+
static HOTKEY_MANAGER: RefCell<Option<GlobalHotKeyManager>> = RefCell::new(None);
1212
}
1313

1414
pub fn setup(app_handle: tauri::AppHandle) {
1515
let app_handle_clone = app_handle.clone();
1616

1717
let manager = GlobalHotKeyManager::new().expect("Failed to initialize hotkey manager");
18-
*HOTKEY_MANAGER.lock().unwrap() = Some(manager);
18+
HOTKEY_MANAGER.with(|m| *m.borrow_mut() = Some(manager));
1919

2020
let rt = app_handle.state::<tokio::runtime::Runtime>();
2121
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) {
3333
let payload_str = event.payload().to_string();
3434

3535
if let Ok(old_hotkey) = parse_hotkey(&initial_shortcut_for_update) {
36-
if let Some(manager) = HOTKEY_MANAGER.lock().unwrap().as_ref() {
37-
let _ = manager.unregister(old_hotkey);
38-
}
36+
HOTKEY_MANAGER.with(|manager| {
37+
if let Some(manager) = manager.borrow().as_ref() {
38+
let _ = manager.unregister(old_hotkey);
39+
}
40+
});
3941
}
4042

4143
if let Err(e) = register_shortcut(&payload_str) {
@@ -47,9 +49,11 @@ pub fn setup(app_handle: tauri::AppHandle) {
4749
let payload_str = event.payload().to_string();
4850

4951
if let Ok(old_hotkey) = parse_hotkey(&initial_shortcut_for_save) {
50-
if let Some(manager) = HOTKEY_MANAGER.lock().unwrap().as_ref() {
51-
let _ = manager.unregister(old_hotkey);
52-
}
52+
HOTKEY_MANAGER.with(|manager| {
53+
if let Some(manager) = manager.borrow().as_ref() {
54+
let _ = manager.unregister(old_hotkey);
55+
}
56+
});
5357
}
5458

5559
if let Err(e) = register_shortcut(&payload_str) {
@@ -77,10 +81,12 @@ pub fn setup(app_handle: tauri::AppHandle) {
7781

7882
fn register_shortcut(shortcut: &str) -> Result<(), Box<dyn std::error::Error>> {
7983
let hotkey = parse_hotkey(shortcut)?;
80-
if let Some(manager) = HOTKEY_MANAGER.lock().unwrap().as_ref() {
81-
manager.register(hotkey)?;
82-
}
83-
Ok(())
84+
HOTKEY_MANAGER.with(|manager| {
85+
if let Some(manager) = manager.borrow().as_ref() {
86+
manager.register(hotkey)?;
87+
}
88+
Ok(())
89+
})
8490
}
8591

8692
fn parse_hotkey(shortcut: &str) -> Result<HotKey, Box<dyn std::error::Error>> {

0 commit comments

Comments
 (0)