diff --git a/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoom.cs b/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoom.cs index f42f8d7f5f..1a02dab5e0 100644 --- a/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoom.cs +++ b/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoom.cs @@ -9,16 +9,33 @@ namespace osu.Game.Online.RealtimeMultiplayer [Serializable] public class MultiplayerRoom { + private object writeLock = new object(); + public long RoomID { get; set; } public MultiplayerRoomState State { get; set; } - public IReadOnlyList Users => users; - private List users = new List(); - public void Join(int user) => users.Add(new MultiplayerRoomUser(user)); + public IReadOnlyList Users + { + get + { + lock (writeLock) + return users.ToArray(); + } + } - public void Leave(int user) => users.RemoveAll(u => u.UserID == user); + public void Join(int user) + { + lock (writeLock) + users.Add(new MultiplayerRoomUser(user)); + } + + public void Leave(int user) + { + lock (writeLock) + users.RemoveAll(u => u.UserID == user); + } } }