1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-14 06:52:55 +08:00
Commit Graph

35986 Commits

Author SHA1 Message Date
Dean Herbert
8a0b975d71 Fix deadlock scenario when calculating fallback difficulty
The previous code would run a calcaulation for the beatmap's own ruleset
if the current one failed. While this does make sense, with the current
way we use this component (and the implementation flow) it is quite unsafe.

The to the call on `.Result` in the `catch` block, this would 100%
deadlock due to the thread concurrency of the `ThreadedTaskScheduler`
being 1. Even if the nested run could be run inline (it should be), the
task scheduler won't even get to the point of checking whether this is
feasible due to it being saturated by the already running task.

I'm not sure if we still need this fallback lookup logic. After removing
it, it's feasible that 0 stars will be returned during the scenario that
previously caused a deadlock, but I don't necessarily think this is
incorrect. There may be another reason for this needing to exist which
I'm not aware of (diffcalc?) but if that's the case we may want to move
the try-catch handling to the point of usage.

To reproduce the deadlock scenario with 100% success (the repro
instructions in the linked issue aren't that simple and require some
patience and good timing), the main portion of the lookup can be changed
to randomly trigger a nested lookup:

```
if (RNG.NextSingle() > 0.5f)
    return GetAsync(new
DifficultyCacheLookup(key.Beatmap, key.Beatmap.Ruleset,
key.OrderedMods)).Result;
else
    return new StarDifficulty(attributes);
```

After switching beatmap once or twice, pausing debug and viewing the
state of threads should show exactly what is going on.
2021-01-14 18:25:34 +09:00
Dean Herbert
6eca8eac65
Merge pull request #11479 from smoogipoo/fix-judgement-1-frame-issue
Fix default judgement text mispositioned for one frame
2021-01-14 13:14:50 +09:00
smoogipoo
d5878db615 Fix default judgement text mispositioned for one frame 2021-01-14 12:33:33 +09:00
Dan Balasescu
98858d2a9a
Merge pull request #11476 from bdach/revert-low-ar-buff
Revert overlooked AR<8 speed buff
2021-01-14 11:13:37 +09:00
Bartłomiej Dach
398f8762b1
Merge pull request #11474 from frenzibyte/rename-downloaded-state
Rename download state `Downloaded` to `Importing`
2021-01-13 20:31:03 +01:00
Bartłomiej Dach
1ba586a683 Revert overlooked AR<8 speed buff
Pull request #11107 introduced changes in osu! performance calculation,
related to a scaling coefficient applied to the speed and aim skills.
The coefficient in question was dependent on the approach rate of
a map. During a post-merge review of that PR, it was spotted that
the scaling coefficient for speed also had a 10x buff applied for AR<8,
which could reach magnitudes as large as 80% on AR0, which seems quite
exorbitant. This change was not discussed or mentioned anywhere in the
review process.

Revert back to the old multiplier of 0.01 rather than 0.1 for AR<8. The
negative slope through AR0 to 8 is retained in its previous form.
2021-01-13 17:59:29 +01:00
Salman Ahmed
1f12b2bd09 Rename download state Downloaded to Importing 2021-01-13 18:04:53 +03:00
Dean Herbert
10fd4cf7c9
Merge pull request #11467 from bdach/fix-multiplayer-non-host-crash
Fix non-hosts crashing on load requested
2021-01-13 11:38:59 +09:00
Bartłomiej Dach
2d3cacca11 Fix non-hosts crashing on load requested
`onLoadRequested()` always released the `readyClickOperation` ongoing
operation, without checking whether it actually needs to/should (it
should only do so if the action initiating the operation was starting
the game by the host). This would crash all other consumers, who already
released the operation when their ready-up operation completed server
side.

To resolve, relax the constraint such that the operation can be ended
multiple times in any order. At the end of the day the thing that
matters is that the operation is done and the ready button is unblocked.
2021-01-13 00:58:53 +01:00
Bartłomiej Dach
becd52b5d2
Merge pull request #11465 from smoogipoo/fix-taiko-conversion-2 2021-01-12 20:43:37 +01:00
smoogipoo
9a22df2b88 Fix BPM multiplier not working in all cases 2021-01-12 17:50:22 +09:00
smoogipoo
22a0f99f35 Add failing test 2021-01-12 17:49:21 +09:00
Dean Herbert
dd809df076
Merge pull request #11118 from MiraiSubject/tourney-switching-ui
Add the ability to switch tournaments to the SetupScreen
2021-01-11 16:36:45 +09:00
Dean Herbert
f65042cf44 Add missing licence headers 2021-01-11 15:47:27 +09:00
Dean Herbert
c9466426b7 Change field to local variable 2021-01-11 14:45:01 +09:00
Dean Herbert
7a7c583ded Move setup screen classes out of single file and into their own namespace 2021-01-11 14:44:07 +09:00
Dean Herbert
bd627534b7 Use disabled state instead of hiding button 2021-01-11 14:38:51 +09:00
Dean Herbert
ba3a7a0501 Clean up code 2021-01-11 14:38:42 +09:00
Dean Herbert
49057e8cbc Cache TournamentStorage explicitly for better safety 2021-01-11 14:38:42 +09:00
Dean Herbert
2abeda5e0f
Merge pull request #11447 from bdach/fix-play-button-crashes
Fix track previews crashing on completion
2021-01-11 03:10:18 +09:00
Dean Herbert
d2ca6da0fd Remove unused constant 2021-01-11 01:56:09 +09:00
Dean Herbert
bd37723788 Expose as IBindable for added safety 2021-01-11 01:55:54 +09:00
Dean Herbert
e4eb44df6e Merge branch 'master' into fix-play-button-crashes 2021-01-11 01:46:41 +09:00
Shivam
f466791b69 Move assignments to the TournamentSwitcher component
This also adds conditional checks for displaying the "Close osu!" button
2021-01-10 17:34:20 +01:00
Shivam
959696c296 Merge branch 'master' into tourney-switching-ui 2021-01-10 17:34:03 +01:00
Shivam
e5c670f843 Merge branch 'master' into tourney-switching-ui 2021-01-10 17:33:52 +01:00
Bartłomiej Dach
b79e8d0192
Merge pull request #11386 from frenzibyte/fix-mod-buttons-not-copying-settings 2021-01-10 16:37:25 +01:00
Bartłomiej Dach
d110ed9e95 Merge branch 'master' into fix-mod-buttons-not-copying-settings 2021-01-10 15:42:33 +01:00
Bartłomiej Dach
e006891db0
Merge pull request #11452 from bdach/ongoing-operation-tracker-safety 2021-01-10 15:41:13 +01:00
Bartłomiej Dach
4b4adc927c Rename param to match method body 2021-01-10 15:35:53 +01:00
Dean Herbert
4e32b0d6de
Merge branch 'master' into ongoing-operation-tracker-safety 2021-01-10 23:05:03 +09:00
Dean Herbert
95ad324a39
Merge branch 'master' into fix-mod-buttons-not-copying-settings 2021-01-10 23:01:54 +09:00
Dean Herbert
556dc11da7
Merge pull request #11392 from ppy/dependabot/nuget/Microsoft.CodeAnalysis.FxCopAnalyzers-3.3.2
Bump Microsoft.CodeAnalysis.FxCopAnalyzers from 3.3.1 to 3.3.2
2021-01-10 16:18:02 +09:00
Dean Herbert
e81f9e358e
Merge pull request #11448 from bdach/fix-editor-enter-crash
Fix editor crashing on enter if login overlay was previously opened
2021-01-10 12:59:47 +09:00
Bartłomiej Dach
8c3955d341 Improve safety of ongoing operation tracker
Finishing an operation started via
`OngoingOperationTracker.BeginOperation()` was risky in cases where the
operation ended at a callback on another thread (which, in the case of
multiplayer, is *most* cases). In particular, if any consumer registered
a callback that mutates transforms when the operation ends, it would
result in crashes after the framework-side safety checks.

Rework `OngoingOperationTracker` into an always-present component
residing in the drawable hierarchy, and ensure that the
`operationInProgress` bindable is always updated on the update thread.
This way consumers don't have to add local schedules in multiple places.
2021-01-09 22:45:24 +01:00
Dean Herbert
c8d83a9fb3
Merge pull request #11353 from bdach/disable-repeat-multi-actions
Disable multiplayer action buttons after clicks to prevent double operations
2021-01-09 17:42:38 +09:00
Dean Herbert
b69fe8a274
Merge branch 'master' into disable-repeat-multi-actions 2021-01-09 10:15:20 +09:00
Bartłomiej Dach
c1ef05af82
Merge branch 'master' into dependabot/nuget/Microsoft.CodeAnalysis.FxCopAnalyzers-3.3.2 2021-01-08 22:36:03 +01:00
Salman Ahmed
0aad0c7c6c Target logic at this and adjust variables 2021-01-09 00:31:18 +03:00
Bartłomiej Dach
ff60d652ed Move out test ongoing operation tracker to higher level 2021-01-08 22:28:21 +01:00
Salman Ahmed
375ecf92ed Merge remote-tracking branch 'upstream/master' into fix-mod-buttons-not-copying-settings 2021-01-09 00:26:18 +03:00
Bartłomiej Dach
c2eeb822b8 Rename {joiningRoom -> operationInProgress} 2021-01-08 22:23:38 +01:00
Bartłomiej Dach
dad5dd3667 Remove unnecessary permissiveness wrt null 2021-01-08 22:21:54 +01:00
Bartłomiej Dach
284d30d336 Move screen activity update to LoadComplete()
Fixes a potential crash when moving from main menu to editor after
having previously opened the login settings overlay. Setting the
activity in BDL as done before is unsafe, as that set can trigger value
change callbacks, which in turn can trigger adding transforms, which
should always be done on the update thread.

Semantically it also makes sense, as the user activity should change
once the screen they're moving to has actually loaded and displayed to
the user.
2021-01-08 21:18:15 +01:00
Bartłomiej Dach
274a045d8d Remove Dispose() override
Culls another non-thread-safe mutation of the `Playing` bindable.
It seems to be a weird vestige from an earlier revision of the old
"direct" panel, which relied on `DisposeOnDeathRemoval` to finish track
playback (and then was removed in
6c150c9ed7). The play button is no longer
responsible for managing preview track lifetime anyway;
`PreviewTrackManager`'s method are intended for that.
2021-01-08 20:08:19 +01:00
Bartłomiej Dach
52789118a3 Schedule play button state update
Revealed by the framework-side transform thread safety checks. `Stopped`
is even annotated as not being thread-safe (but was annotated as such
long after the class's nascence).
2021-01-08 20:08:19 +01:00
Dean Herbert
8a7a1fc40a
Merge pull request #11439 from peppy/improve-hover-sounds-debounce
Improve hover sounds playback (to reduce volume saturation and delay)
2021-01-09 02:31:02 +09:00
Bartłomiej Dach
49c6abcb5c Remove mention of default value in xmldoc
Just bound to get outdated with every change anyway. Look at the actual
default value declaration to see what the default is.
2021-01-08 18:26:41 +01:00
Bartłomiej Dach
9422219eaa
Merge pull request #11424 from peppy/fix-transform-mutation-mod-selection 2021-01-08 18:21:56 +01:00
Bartłomiej Dach
d507a08951 Start with null last hover playback time 2021-01-08 18:16:03 +01:00