diff --git a/osu.Game/Online/Multiplayer/StatefulMultiplayerClient.cs b/osu.Game/Online/Multiplayer/StatefulMultiplayerClient.cs
index c15401e99d..bf62c450c9 100644
--- a/osu.Game/Online/Multiplayer/StatefulMultiplayerClient.cs
+++ b/osu.Game/Online/Multiplayer/StatefulMultiplayerClient.cs
@@ -303,7 +303,7 @@ namespace osu.Game.Online.Multiplayer
Room.Users.Single(u => u.UserID == userId).State = state;
- updatePlayingUsers(userId, state);
+ updateUserPlayingState(userId, state);
RoomUpdated?.Invoke();
}, false);
@@ -453,15 +453,22 @@ namespace osu.Game.Online.Multiplayer
apiRoom.Playlist.Add(playlistItem);
}
- private void updatePlayingUsers(int userId, MultiplayerUserState state)
+ ///
+ /// For the provided user ID, update whether the user is included in .
+ ///
+ /// The user's ID.
+ /// The new state of the user.
+ private void updateUserPlayingState(int userId, MultiplayerUserState state)
{
- bool isPlaying = state >= MultiplayerUserState.WaitingForLoad && state <= MultiplayerUserState.FinishedPlay;
bool wasPlaying = PlayingUsers.Contains(userId);
+ bool isPlaying = state >= MultiplayerUserState.WaitingForLoad && state <= MultiplayerUserState.FinishedPlay;
- if (!wasPlaying && isPlaying)
+ if (isPlaying == wasPlaying)
+ return;
+
+ if (isPlaying)
PlayingUsers.Add(userId);
-
- if (wasPlaying && !isPlaying)
+ else
PlayingUsers.Remove(userId);
}
}