diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 61263c4..6d46ed7 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -51,10 +51,9 @@ pub async fn run() { if cfg!(target_os = "macos") { #[cfg(target_os = "macos")] - unsafe { - let static_state: State<'static, state::AppData> = std::mem::transmute(app.state::()); - macos_interop::now_playing::setup_handlers(&app.app_handle(), static_state); - } + macos_interop::now_playing::setup_handlers( + Box::leak(Box::new(app.app_handle().clone())) + ); } let main_window = app.get_webview_window("main").unwrap(); diff --git a/src-tauri/src/macos_interop/now_playing.rs b/src-tauri/src/macos_interop/now_playing.rs index 9205c21..f412369 100644 --- a/src-tauri/src/macos_interop/now_playing.rs +++ b/src-tauri/src/macos_interop/now_playing.rs @@ -14,9 +14,12 @@ use objc2_media_player::{ use tauri::plugin::{Builder, TauriPlugin}; use tauri::{AppHandle, Manager, Runtime, State}; +use crate::state; #[cfg(target_os = "macos")] -pub fn setup_handlers(app: &AppHandle, state: State<'static, crate::state::AppData>) { +pub fn setup_handlers(app: &'static AppHandle) { + let state = app.state::(); + let shared = unsafe { objc2_media_player::MPRemoteCommandCenter::sharedCommandCenter() }; let state_clone = state.clone(); let app_clone = app.clone();