summaryrefslogtreecommitdiffstats
path: root/modules/multiplayer
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-07-31 22:32:55 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-07-31 22:32:55 +0200
commit95593301876d45a54a88ea8503228150b9378154 (patch)
treecd28980dc74d8567abbe53f060563715fc123996 /modules/multiplayer
parent6cd2876c98e971e9abd3471eb76f958477df6658 (diff)
parentc6be5f130c7e7a8de12a719a33253ee4674ba8a6 (diff)
downloadredot-engine-95593301876d45a54a88ea8503228150b9378154.tar.gz
Merge pull request #91011 from Faless/mp/fix_disconnect_on_change
[MP] Fix `disconnect_peer` not doing the proper cleanup
Diffstat (limited to 'modules/multiplayer')
-rw-r--r--modules/multiplayer/scene_multiplayer.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/modules/multiplayer/scene_multiplayer.cpp b/modules/multiplayer/scene_multiplayer.cpp
index 99aba680cc..e2ebca0c88 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);
}