mirror of
https://github.com/gopher64/gopher64.git
synced 2026-07-11 01:25:20 +02:00
+16
-6
@@ -111,7 +111,6 @@ fn setup_create_window(
|
||||
let weak = app.as_weak();
|
||||
app.on_netplay_create_session(
|
||||
move |session_name, player_name, game_name, game_hash, game_cheats, password| {
|
||||
let _ = netplay_write_sender.send(None); // close current websocket if any
|
||||
manage_websocket(
|
||||
netplay_read_sender.clone(),
|
||||
netplay_write_receiver.resubscribe(),
|
||||
@@ -394,9 +393,6 @@ fn update_ping(
|
||||
let mut write_clone = write.clone();
|
||||
tokio::spawn(async move {
|
||||
loop {
|
||||
if close_ping_rx.try_recv().is_ok() {
|
||||
break;
|
||||
}
|
||||
socket.update_peers();
|
||||
for peer in socket.connected_peers() {
|
||||
let now = std::time::SystemTime::now()
|
||||
@@ -410,7 +406,22 @@ fn update_ping(
|
||||
let data = postcard::to_stdvec(&ping_message).unwrap();
|
||||
let _ = write.send((peer, data.into())).await;
|
||||
}
|
||||
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
|
||||
tokio::select! {
|
||||
result = close_ping_rx.recv() => {
|
||||
match result {
|
||||
Ok(()) => {
|
||||
break;
|
||||
}
|
||||
Err(tokio::sync::broadcast::error::RecvError::Lagged(_)) => {
|
||||
panic!("close_ping_rx lagged");
|
||||
}
|
||||
Err(tokio::sync::broadcast::error::RecvError::Closed) => {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
_ = tokio::time::sleep(std::time::Duration::from_secs(1)) => {}
|
||||
}
|
||||
}
|
||||
socket.close();
|
||||
});
|
||||
@@ -626,7 +637,6 @@ fn setup_join_window(
|
||||
netplay_write_receiver: tokio::sync::broadcast::Receiver<Option<NetplayLobbyMessage>>,
|
||||
close_ping_rx: tokio::sync::broadcast::Receiver<()>,
|
||||
) {
|
||||
let _ = netplay_write_sender.send(None); // close current websocket if any
|
||||
manage_websocket(
|
||||
netplay_read_sender.clone(),
|
||||
netplay_write_receiver.resubscribe(),
|
||||
|
||||
Reference in New Issue
Block a user