diff --git a/src/retroachievements.rs b/src/retroachievements.rs index 8778b2a0..3f6a59f1 100644 --- a/src/retroachievements.rs +++ b/src/retroachievements.rs @@ -181,11 +181,16 @@ pub async fn unload_game( discord_watch_tx: Option>, discord_handle: Option>, ) { - if let Some(discord_handle) = discord_handle + if let Some(mut discord_handle) = discord_handle && let Some(discord_watch_tx) = discord_watch_tx { let _ = discord_watch_tx.send(()); - discord_handle.await.unwrap(); + if tokio::time::timeout(std::time::Duration::from_secs(1), &mut discord_handle) + .await + .is_err() + { + discord_handle.abort(); + } } unsafe { ra_unload_game() }; } diff --git a/src/ui/usb.rs b/src/ui/usb.rs index 1e0a14f2..9546935b 100644 --- a/src/ui/usb.rs +++ b/src/ui/usb.rs @@ -179,8 +179,12 @@ pub async fn close( usb_handle: Option>, ) { let _ = shutdown_tx.send(()); - if let Some(handle) = usb_handle { - handle.await.unwrap(); + if let Some(mut handle) = usb_handle + && tokio::time::timeout(std::time::Duration::from_secs(1), &mut handle) + .await + .is_err() + { + handle.abort(); } }