Allow all StatefulMultiplayerClient schedules to run inline

Fixes test failures due to not allowing to do so, therefore inverting
execution order in some cases - for example, calling

        JoinRoom(room);
        LeaveRoom();

on the update thread would invert execution order due to the first being
unscheduled but the second being scheduled.
This commit is contained in:
Bartłomiej Dach 2020-12-26 11:58:25 +01:00
parent dae27fefe4
commit 04d54c40db

View File

@ -126,7 +126,7 @@ namespace osu.Game.Online.Multiplayer
public virtual Task LeaveRoom() public virtual Task LeaveRoom()
{ {
Schedule(() => Scheduler.Add(() =>
{ {
if (Room == null) if (Room == null)
return; return;
@ -135,7 +135,7 @@ namespace osu.Game.Online.Multiplayer
Room = null; Room = null;
RoomChanged?.Invoke(); RoomChanged?.Invoke();
}); }, false);
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -190,7 +190,7 @@ namespace osu.Game.Online.Multiplayer
if (Room == null) if (Room == null)
return Task.CompletedTask; return Task.CompletedTask;
Schedule(() => Scheduler.Add(() =>
{ {
if (Room == null) if (Room == null)
return; return;
@ -215,7 +215,7 @@ namespace osu.Game.Online.Multiplayer
} }
RoomChanged?.Invoke(); RoomChanged?.Invoke();
}); }, false);
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -227,7 +227,7 @@ namespace osu.Game.Online.Multiplayer
await PopulateUser(user); await PopulateUser(user);
Schedule(() => Scheduler.Add(() =>
{ {
if (Room == null) if (Room == null)
return; return;
@ -239,7 +239,7 @@ namespace osu.Game.Online.Multiplayer
Room.Users.Add(user); Room.Users.Add(user);
RoomChanged?.Invoke(); RoomChanged?.Invoke();
}); }, false);
} }
Task IMultiplayerClient.UserLeft(MultiplayerRoomUser user) Task IMultiplayerClient.UserLeft(MultiplayerRoomUser user)
@ -247,7 +247,7 @@ namespace osu.Game.Online.Multiplayer
if (Room == null) if (Room == null)
return Task.CompletedTask; return Task.CompletedTask;
Schedule(() => Scheduler.Add(() =>
{ {
if (Room == null) if (Room == null)
return; return;
@ -256,7 +256,7 @@ namespace osu.Game.Online.Multiplayer
PlayingUsers.Remove(user.UserID); PlayingUsers.Remove(user.UserID);
RoomChanged?.Invoke(); RoomChanged?.Invoke();
}); }, false);
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -266,7 +266,7 @@ namespace osu.Game.Online.Multiplayer
if (Room == null) if (Room == null)
return Task.CompletedTask; return Task.CompletedTask;
Schedule(() => Scheduler.Add(() =>
{ {
if (Room == null) if (Room == null)
return; return;
@ -279,7 +279,7 @@ namespace osu.Game.Online.Multiplayer
apiRoom.Host.Value = user?.User; apiRoom.Host.Value = user?.User;
RoomChanged?.Invoke(); RoomChanged?.Invoke();
}); }, false);
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -295,7 +295,7 @@ namespace osu.Game.Online.Multiplayer
if (Room == null) if (Room == null)
return Task.CompletedTask; return Task.CompletedTask;
Schedule(() => Scheduler.Add(() =>
{ {
if (Room == null) if (Room == null)
return; return;
@ -306,7 +306,7 @@ namespace osu.Game.Online.Multiplayer
PlayingUsers.Remove(userId); PlayingUsers.Remove(userId);
RoomChanged?.Invoke(); RoomChanged?.Invoke();
}); }, false);
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -316,13 +316,13 @@ namespace osu.Game.Online.Multiplayer
if (Room == null) if (Room == null)
return Task.CompletedTask; return Task.CompletedTask;
Schedule(() => Scheduler.Add(() =>
{ {
if (Room == null) if (Room == null)
return; return;
LoadRequested?.Invoke(); LoadRequested?.Invoke();
}); }, false);
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -332,7 +332,7 @@ namespace osu.Game.Online.Multiplayer
if (Room == null) if (Room == null)
return Task.CompletedTask; return Task.CompletedTask;
Schedule(() => Scheduler.Add(() =>
{ {
if (Room == null) if (Room == null)
return; return;
@ -340,7 +340,7 @@ namespace osu.Game.Online.Multiplayer
PlayingUsers.AddRange(Room.Users.Where(u => u.State == MultiplayerUserState.Playing).Select(u => u.UserID)); PlayingUsers.AddRange(Room.Users.Where(u => u.State == MultiplayerUserState.Playing).Select(u => u.UserID));
MatchStarted?.Invoke(); MatchStarted?.Invoke();
}); }, false);
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -350,13 +350,13 @@ namespace osu.Game.Online.Multiplayer
if (Room == null) if (Room == null)
return Task.CompletedTask; return Task.CompletedTask;
Schedule(() => Scheduler.Add(() =>
{ {
if (Room == null) if (Room == null)
return; return;
ResultsReady?.Invoke(); ResultsReady?.Invoke();
}); }, false);
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -404,7 +404,7 @@ namespace osu.Game.Online.Multiplayer
if (Room == null) if (Room == null)
return; return;
Schedule(() => Scheduler.Add(() =>
{ {
if (Room == null) if (Room == null)
return; return;
@ -425,7 +425,7 @@ namespace osu.Game.Online.Multiplayer
req.Success += res => updatePlaylist(settings, res); req.Success += res => updatePlaylist(settings, res);
api.Queue(req); api.Queue(req);
}); }, false);
} }
private void updatePlaylist(MultiplayerRoomSettings settings, APIBeatmapSet onlineSet) private void updatePlaylist(MultiplayerRoomSettings settings, APIBeatmapSet onlineSet)