Browse Source

Merge pull request #91011 from Faless/mp/fix_disconnect_on_change

[MP] Fix `disconnect_peer` not doing the proper cleanup
Rémi Verschelde 1 year ago
parent
commit
9559330187
1 changed files with 5 additions and 5 deletions
  1. 5 5
      modules/multiplayer/scene_multiplayer.cpp

+ 5 - 5
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);
 }