From 39449da3048e14ff36b3c6ced5d9965e8f7ba814 Mon Sep 17 00:00:00 2001 From: Techjar Date: Tue, 10 Jul 2018 18:35:37 -0400 Subject: [PATCH] NetPlay: Don't update mappings on leave if player had no mappings This stops clients randomly deadlocking when a spectator leaves, as the mappings construct is not thread-safe and should not be written while the game is running. --- Source/Core/Core/NetPlayServer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Core/Core/NetPlayServer.cpp b/Source/Core/Core/NetPlayServer.cpp index 78ad81364c..0556697efe 100644 --- a/Source/Core/Core/NetPlayServer.cpp +++ b/Source/Core/Core/NetPlayServer.cpp @@ -366,7 +366,7 @@ unsigned int NetPlayServer::OnConnect(ENetPeer* socket) // called from ---NETPLAY--- thread unsigned int NetPlayServer::OnDisconnect(const Client& player) { - PlayerId pid = player.pid; + const PlayerId pid = player.pid; if (m_is_running) { @@ -405,18 +405,18 @@ unsigned int NetPlayServer::OnDisconnect(const Client& player) if (mapping == pid) { mapping = -1; + UpdatePadMapping(); } } - UpdatePadMapping(); for (PadMapping& mapping : m_wiimote_map) { if (mapping == pid) { mapping = -1; + UpdateWiimoteMapping(); } } - UpdateWiimoteMapping(); return 0; }