diff --git a/build/PatchElfPageSize.targets b/build/PatchElfPageSize.targets index 9be15f4da475..003209930eae 100644 --- a/build/PatchElfPageSize.targets +++ b/build/PatchElfPageSize.targets @@ -269,6 +269,6 @@ finally <_NuGetNativeLibs Include="$(NuGetPackageRoot)/**/runtimes/android-*/native/*.so" /> - + diff --git a/osu.Android.props b/osu.Android.props index 9ad425da8662..7d5474ea97d2 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -13,10 +13,12 @@ the patch in some build orderings. This suppression is harmless since we do fix them. --> false + + @@ -24,7 +26,20 @@ true true true + + false + true + partial + + + + + + + + + + true + + + + + + native + + + native + + + diff --git a/osu.Android/AndroidManifest.xml b/osu.Android/AndroidManifest.xml index bb3cb2c56d07..b0e837ed958c 100644 --- a/osu.Android/AndroidManifest.xml +++ b/osu.Android/AndroidManifest.xml @@ -1,7 +1,7 @@ - + diff --git a/osu.Game.Rulesets.Catch.Tests.Android/AndroidManifest.xml b/osu.Game.Rulesets.Catch.Tests.Android/AndroidManifest.xml index 16be596df96b..7b91d6c42d64 100644 --- a/osu.Game.Rulesets.Catch.Tests.Android/AndroidManifest.xml +++ b/osu.Game.Rulesets.Catch.Tests.Android/AndroidManifest.xml @@ -2,5 +2,5 @@ - + \ No newline at end of file diff --git a/osu.Game.Rulesets.Mania.Tests.Android/AndroidManifest.xml b/osu.Game.Rulesets.Mania.Tests.Android/AndroidManifest.xml index c308a3d4a3e4..9e73f565bdab 100644 --- a/osu.Game.Rulesets.Mania.Tests.Android/AndroidManifest.xml +++ b/osu.Game.Rulesets.Mania.Tests.Android/AndroidManifest.xml @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/osu.Game.Rulesets.Osu.Tests.Android/AndroidManifest.xml b/osu.Game.Rulesets.Osu.Tests.Android/AndroidManifest.xml index 93b0d73e85c8..542eb77b90fa 100644 --- a/osu.Game.Rulesets.Osu.Tests.Android/AndroidManifest.xml +++ b/osu.Game.Rulesets.Osu.Tests.Android/AndroidManifest.xml @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/osu.Game.Rulesets.Taiko.Tests.Android/AndroidManifest.xml b/osu.Game.Rulesets.Taiko.Tests.Android/AndroidManifest.xml index f8213d7936e5..e1f74ce665c2 100644 --- a/osu.Game.Rulesets.Taiko.Tests.Android/AndroidManifest.xml +++ b/osu.Game.Rulesets.Taiko.Tests.Android/AndroidManifest.xml @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/osu.Game.Tests.Android/AndroidManifest.xml b/osu.Game.Tests.Android/AndroidManifest.xml index 48fa69445873..04b18b98ca15 100644 --- a/osu.Game.Tests.Android/AndroidManifest.xml +++ b/osu.Game.Tests.Android/AndroidManifest.xml @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/osu.Game/Online/Spectator/SpectatorClient.cs b/osu.Game/Online/Spectator/SpectatorClient.cs index f245e8cf3a27..a48902ec0538 100644 --- a/osu.Game/Online/Spectator/SpectatorClient.cs +++ b/osu.Game/Online/Spectator/SpectatorClient.cs @@ -214,8 +214,10 @@ public void BeginPlaying(long? scoreToken, GameplayState state, Score score) Schedule(() => { if (isPlaying) - throw new InvalidOperationException($"Cannot invoke {nameof(BeginPlaying)} when already playing"); - + { + Logger.Log($"Cannot invoke {nameof(BeginPlaying)} when already playing. Ignoring."); + return; + } isPlaying = true; // transfer state at point of beginning play diff --git a/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs b/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs index 4faea505b930..99700ebd805d 100644 --- a/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs +++ b/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs @@ -432,7 +432,9 @@ public async Task SendUserMatchRequest(int userId, MatchUserRequest request) break; case StopCountdownRequest stopCountdown: - await StopCountdown(ServerRoom.ActiveCountdowns.First(c => c.ID == stopCountdown.ID)).ConfigureAwait(false); + var countdownToRemove = ServerRoom.ActiveCountdowns.FirstOrDefault(c => c.ID == stopCountdown.ID); + if (countdownToRemove != null) + await StopCountdown(countdownToRemove).ConfigureAwait(false); break; case RollRequest rollRequest: @@ -487,7 +489,10 @@ public async Task StopCountdown(MultiplayerCountdown countdown) Debug.Assert(ServerRoom != null); Debug.Assert(LocalUser != null); - ServerRoom.ActiveCountdowns.Remove(ServerRoom.ActiveCountdowns.First(c => c.ID == countdown.ID)); + var existing = ServerRoom.ActiveCountdowns.FirstOrDefault(c => c.ID == countdown.ID); + + if (existing != null) + ServerRoom.ActiveCountdowns.Remove(existing); await ((IMultiplayerClient)this).MatchEvent(clone(new CountdownStoppedEvent(countdown.ID))).ConfigureAwait(false); }