From eb983ed548dbd55492e74d995994ff08831a5aac Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Tue, 16 Nov 2021 00:02:38 +0900 Subject: [PATCH] Fix potential crash from playlist updating during async load --- .../Multiplayer/MultiplayerMatchSubScreen.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs index aa936109c6..9e689773af 100644 --- a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs +++ b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs @@ -44,6 +44,8 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer public override string ShortTitle => "room"; + public OsuButton AddOrEditPlaylistButton { get; private set; } + [Resolved] private MultiplayerClient client { get; set; } @@ -55,7 +57,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer [CanBeNull] private IDisposable readyClickOperation; - public OsuButton AddOrEditPlaylistButton { get; private set; } + private DrawableRoomPlaylist playlist; public MultiplayerMatchSubScreen(Room room) : base(room) @@ -73,6 +75,9 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer BeatmapAvailability.BindValueChanged(updateBeatmapAvailability, true); UserMods.BindValueChanged(onUserModsChanged); + playlist.Items.BindTo(Room.Playlist); + playlist.SelectedItem.BindTo(SelectedItem); + client.LoadRequested += onLoadRequested; client.RoomUpdated += onRoomUpdated; @@ -149,11 +154,9 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer null, new Drawable[] { - new DrawableRoomPlaylist(false, false) + playlist = new DrawableRoomPlaylist(false, false) { RelativeSizeAxes = Axes.Both, - Items = { BindTarget = Room.Playlist }, - SelectedItem = { BindTarget = SelectedItem } }, }, new[]