diff --git a/src/lib.rs b/src/lib.rs index 34d6f446..baaa91e1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -219,7 +219,7 @@ pub fn run(args: Args, arg_count: usize) -> std::io::Result<()> { ra_config.leaderboard, ); - let (tx, rx) = tokio::sync::oneshot::channel::(); + let (tx, mut rx) = tokio::sync::oneshot::channel::(); if let Some(password) = args.ra_password { retroachievements::login_user(username, password, tx); } else if !ra_config.token.is_empty() { @@ -228,10 +228,8 @@ pub fn run(args: Args, arg_count: usize) -> std::io::Result<()> { tx.send(false).unwrap(); } - let join_handle = tokio::spawn(async move { rx.await.unwrap() }); - tokio::runtime::Handle::current() - .block_on(join_handle) - .unwrap(); + while rx.try_recv().is_err() {} + ra_config } else { retroachievements::RAConfig::default() diff --git a/src/retroachievements.rs b/src/retroachievements.rs index 453cc991..8686f675 100644 --- a/src/retroachievements.rs +++ b/src/retroachievements.rs @@ -145,15 +145,12 @@ pub fn load_game( Option>, Option>, ) { - let (tx, rx) = tokio::sync::oneshot::channel::(); + let (tx, mut rx) = tokio::sync::oneshot::channel::(); unsafe { let tx_ptr = Box::into_raw(Box::new(tx)) as *mut std::ffi::c_void; ra_load_game(rom.as_ptr(), rom_size, tx_ptr); }; - let join_handle = tokio::spawn(async move { rx.await.unwrap() }); - tokio::runtime::Handle::current() - .block_on(join_handle) - .unwrap(); + while rx.try_recv().is_err() {} let mut c_title = std::ptr::null(); let mut c_image_url = std::ptr::null();