From 54cdea797ee79b8e63c4f15e0de7b59c8a1c166c Mon Sep 17 00:00:00 2001 From: G2-Games Date: Fri, 27 Dec 2024 19:10:28 -0600 Subject: [PATCH] Hacky fix for crashing when advancing the queue rapidly --- dmp-core/src/music_controller/controller.rs | 2 +- src-tauri/src/lib.rs | 17 ++++++++++------- src-tauri/src/wrappers.rs | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/dmp-core/src/music_controller/controller.rs b/dmp-core/src/music_controller/controller.rs index 3a7e56f..94a6363 100644 --- a/dmp-core/src/music_controller/controller.rs +++ b/dmp-core/src/music_controller/controller.rs @@ -359,7 +359,7 @@ impl Controller { lib_mail.send(LibraryCommand::AllSongs).await.unwrap(); let LibraryResponse::AllSongs(songs) = lib_mail.recv().await.unwrap() else { - unreachable!() + continue; }; lib_mail.send(LibraryCommand::Song(np_song.song.uuid)).await.unwrap(); let LibraryResponse::Song(_, i) = lib_mail.recv().await.unwrap() else { diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 5147b00..da511d2 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -92,20 +92,23 @@ pub fn run() { .unwrap() .to_string(); - let bytes = if query.as_str() == "default" { DEFAULT_IMAGE.to_vec() } - else { - futures::executor::block_on(async move { + let bytes = if query.as_str() == "default" { + Some(DEFAULT_IMAGE.to_vec()) + } else {futures::executor::block_on(async move { let controller = ctx.app_handle().state::(); controller.lib_mail.send(dmp_core::music_controller::controller::LibraryCommand::Song(Uuid::parse_str(query.as_str()).unwrap())).await.unwrap(); - let LibraryResponse::Song(song, _) = controller.lib_mail.recv().await.unwrap() else { unreachable!() }; - song.album_art(0).unwrap_or_else(|_| None).unwrap_or(DEFAULT_IMAGE.to_vec()) + let LibraryResponse::Song(song, _) = controller.lib_mail.recv().await.unwrap() else { + return None + }; + Some(song.album_art(0).unwrap_or_else(|_| None).unwrap_or(DEFAULT_IMAGE.to_vec())) })}; + res.respond( Response::builder() .header("Origin", "*") - .header("Content-Length", bytes.len()) + .header("Content-Length", bytes.as_ref().unwrap_or(&vec![]).len()) .status(200) - .body(bytes) + .body(bytes.unwrap_or_default()) .unwrap() ); }) diff --git a/src-tauri/src/wrappers.rs b/src-tauri/src/wrappers.rs index 148a819..3b01291 100644 --- a/src-tauri/src/wrappers.rs +++ b/src-tauri/src/wrappers.rs @@ -55,7 +55,7 @@ pub async fn get_volume(ctrl_handle: State<'_, ControllerHandle>) -> Result<(), pub async fn next(app: AppHandle, ctrl_handle: State<'_, ControllerHandle>) -> Result<(), String> { ctrl_handle.player_mail.send(dmp_core::music_controller::controller::PlayerCommand::NextSong).await.unwrap(); let PlayerResponse::NowPlaying(song) = ctrl_handle.player_mail.recv().await.unwrap() else { - unreachable!() + return Ok(()) }; println!("next"); app.emit("now_playing_change", _Song::from(&song)).unwrap();