From c6be5f130c7e7a8de12a719a33253ee4674ba8a6 Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Mon, 22 Apr 2024 14:16:00 +0200 Subject: [PATCH] [MP] Fix disconnect_peer not doing the proper cleanup Lower layers (cache, replication) were not being notified about the peer being disconnected. --- modules/multiplayer/scene_multiplayer.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/multiplayer/scene_multiplayer.cpp b/modules/multiplayer/scene_multiplayer.cpp index 99aba680cc5..e2ebca0c88b 100644 --- a/modules/multiplayer/scene_multiplayer.cpp +++ b/modules/multiplayer/scene_multiplayer.cpp @@ -425,11 +425,11 @@ void SceneMultiplayer::_del_peer(int p_id) { void SceneMultiplayer::disconnect_peer(int p_id) { ERR_FAIL_COND(multiplayer_peer.is_null() || multiplayer_peer->get_connection_status() != MultiplayerPeer::CONNECTION_CONNECTED); - if (pending_peers.has(p_id)) { - pending_peers.erase(p_id); - } else if (connected_peers.has(p_id)) { - connected_peers.erase(p_id); - } + // Block signals to avoid emitting peer_disconnected. + bool blocking = is_blocking_signals(); + set_block_signals(true); + _del_peer(p_id); + set_block_signals(blocking); multiplayer_peer->disconnect_peer(p_id); }