1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-18 23:32:54 +08:00
Commit Graph

31134 Commits

Author SHA1 Message Date
Dean Herbert
2d1a8a9d49 Use a more correct CompareTo implementation for ruleset ordering 2022-01-27 21:58:04 +09:00
Salman Ahmed
2cc69d6b19 Replace IsControlDragged with an abstract ShouldBeExpanded 2022-01-27 15:57:56 +03:00
Dean Herbert
33b7bdcf82 Update pointless CompareTo implementation 2022-01-27 21:49:33 +09:00
Dean Herbert
7af23328a4
Merge branch 'master' into ruleset-ordering-fix 2022-01-27 21:46:03 +09:00
Dean Herbert
d7fd11a16d
Merge pull request #16644 from peppy/ruleset-id-fixes
Update all usages of `RulesetID` and `Ruleset.ID` to use `Ruleset.OnlineID`
2022-01-27 21:44:22 +09:00
Dean Herbert
df9f969030
Merge pull request #16645 from peppy/fix-button-system-crash
Fix `ButtonSystem` null reference crash due to missing null check in delayed animations
2022-01-27 17:09:46 +09:00
Dean Herbert
3ae5973ab7 Fix compilation error due to commit split 2022-01-27 17:08:31 +09:00
Dean Herbert
a5d422e82c Merge branch 'master' into ruleset-id-fixes 2022-01-27 17:07:18 +09:00
Dean Herbert
29a4ec949f
Merge pull request #16637 from bdach/editor-changes-not-resetting
Fix changes to beatmap info made in editor persisting after exit without save
2022-01-27 17:02:42 +09:00
Dean Herbert
449e9bcf5c Ensure beatmap carousel scroll position is maintained during deletion operations 2022-01-27 16:52:02 +09:00
Dean Herbert
0a45aa80cb Remove unnecessary double-schedule in UpdateBeatmapSet 2022-01-27 16:52:02 +09:00
Dan Balasescu
54d18bd7ac
Merge pull request #16642 from peppy/ruleset-private-info-set
Make `Ruleset.RulesetInfo` get only
2022-01-27 16:41:52 +09:00
Dan Balasescu
81ba1558de
Merge pull request #16643 from peppy/ruleset-silly-ctor
Remove pointless constructor in `RulesetInfo`
2022-01-27 16:41:38 +09:00
Dean Herbert
b87d1a61a8 Fix ButtonSystem null reference crash due to missing null check in delayed animations
```csharp
[runtime] 2022-01-27 07:36:34 [error]: System.NullReferenceException: Object reference not set to an instance of an object.
[runtime] 2022-01-27 07:36:34 [error]: at osu.Game.Screens.Menu.ButtonSystem.<>c__DisplayClass56_0.<updateLogoState>b__1() in /Users/dean/Projects/osu/osu.Game/Screens/Menu/ButtonSystem.cs:line 357
[runtime] 2022-01-27 07:36:34 [error]: at osu.Framework.Threading.ScheduledDelegate.RunTaskInternal()
[runtime] 2022-01-27 07:36:34 [error]: at osu.Framework.Threading.Scheduler.Update()
[runtime] 2022-01-27 07:36:34 [error]: at osu.Framework.Graphics.Drawable.UpdateSubTree()
```
2022-01-27 16:39:38 +09:00
Dean Herbert
5637fd64d6 Perform ordering using IComparable instead 2022-01-27 15:59:20 +09:00
Dan Balasescu
9ff2b9eb95
Merge pull request #16640 from peppy/realm-migration-always-delete
Improve realm migration UX to give users a recovery path on error
2022-01-27 15:43:14 +09:00
Dean Herbert
5288eedd31 Update all usages of RulesetID and Ruleset.ID to use Ruleset.OnlineID 2022-01-27 15:38:03 +09:00
Dean Herbert
714177cce1 Remove pointless constructor in RulesetInfo 2022-01-27 15:37:27 +09:00
Dean Herbert
e67b1fe0ec Make Ruleset.RulesetInfo get only 2022-01-27 15:36:35 +09:00
Dean Herbert
f30d63107a Add SortID to RulesetInfo to allow stable ordering of rulesets for display 2022-01-27 15:35:16 +09:00
Dean Herbert
67ccb87992 Add exception message to discussion template url 2022-01-27 14:56:04 +09:00
Dean Herbert
fb081384e1 Add safety against zip creation potentially failing (probably can't but still) 2022-01-27 14:55:52 +09:00
Dean Herbert
465e7d29fe Avoid showing the external link warning 2022-01-27 14:53:11 +09:00
Dean Herbert
31abb372e5 Automatically zip and show the backup archive to the user 2022-01-27 14:52:58 +09:00
Dean Herbert
08948f60f3 Move backups to "backups" subfolder to make them easier to find 2022-01-27 14:39:13 +09:00
Dean Herbert
b745252962 Show notification when migration fails to give users a recovery path 2022-01-27 14:39:11 +09:00
Dean Herbert
deb5d75b5f Change migration process to always delete old EF database
It is already backed up, so this is probably fine.
2022-01-27 14:33:46 +09:00
Dean Herbert
587c0f965c Add more attempts to delete EF database
Just noticed in passing. Probably best we do this since it was known to
fail on windows in some rare cases.
2022-01-27 14:32:21 +09:00
Bartłomiej Dach
d760283665
Ensure edited beatmap is restored to a baseline state on exit 2022-01-26 21:15:49 +01:00
Bartłomiej Dach
df9658641c
Merge branch 'master' into Third-party-ruleset-filter-fix 2022-01-26 18:54:20 +01:00
Dean Herbert
f70e10e8a4 Fix ruleset filter matching using OnlineID instead of ShortName 2022-01-27 01:25:57 +09:00
Dean Herbert
f21e3d0d86 Block collection loading until realm migration has completed 2022-01-27 00:34:51 +09:00
Derrick Timmermans
873d367615
Fix custom rulesets not being able to convert maps 2022-01-26 15:51:39 +01:00
Dan Balasescu
bab337591f
Merge pull request #16630 from peppy/fix-null-mod-json-parse-fail
Fix some score imports failing due to null string attempted to be parsed as json
2022-01-26 23:15:23 +09:00
Salman Ahmed
7f34085baa Mark EditorSavingTestScene as abstract 2022-01-26 17:04:30 +03:00
Dean Herbert
378173cc66 Fix some score imports failing due to null string attempted to be parsed as json 2022-01-26 22:46:29 +09:00
Dan Balasescu
cf9ee43b17
Merge pull request #16608 from peppy/playlist-overlay-optimisations
Optimise `PlaylistOverlay` and reduce startup overhead of `MusicController`
2022-01-26 20:28:33 +09:00
Dan Balasescu
a07fce55d4
Merge pull request #16606 from peppy/fix-out-of-order-events-on-block-fail
Fix notification reset events potentially arriving out of order if a block operation times out
2022-01-26 20:28:21 +09:00
Dan Balasescu
0dd2de3e1e
Merge pull request #16628 from peppy/fix-realm-ruleset-ordering
Fix custom rulesets being displayed before official ones
2022-01-26 19:19:01 +09:00
Dan Balasescu
94d3e2c90c
Merge branch 'master' into fix-out-of-order-events-on-block-fail 2022-01-26 19:08:55 +09:00
Dan Balasescu
b3f2392358 Resolve compilation error due to removed method 2022-01-26 19:04:18 +09:00
Dan Balasescu
cdca1285ab
Merge branch 'master' into playlist-overlay-optimisations 2022-01-26 19:01:33 +09:00
Dan Balasescu
b1a23486c5
Merge pull request #16626 from peppy/fix-skin-section-realm-usage
Refactor `SkinSection` to avoid unnecessary realm queries
2022-01-26 19:01:15 +09:00
Dean Herbert
57e624d8e7 Fix custom rulesets being displayed before official ones 2022-01-26 18:46:32 +09:00
Dean Herbert
473c4d00ca Fix grouped difficulty icons using incorrect lookup for ruleset grouping 2022-01-26 18:38:44 +09:00
Dean Herbert
45636ce04b Remove collection ToLive helper method to avoid confusion 2022-01-26 18:26:37 +09:00
Dean Herbert
3aa681005b Skip importing scores which have no matching realm ruleset
There's no real way to recover these unless we want to start importing
rulesets into realm. And that seems counter productive. This can only
happen if users don't have the dll present any more, and it was removed
far before realm was tracking rulesets (else it would have an
`Available=0` entry in realm to match).
2022-01-26 18:04:54 +09:00
Dean Herbert
f2d48d088d Fix realm migration failures with presence of databased EF rulesets that don't exist on disk 2022-01-26 17:57:03 +09:00
Dean Herbert
d1a2256262 Refactor SkinSection to avoid unnecessary realm queries 2022-01-26 17:48:11 +09:00
Dean Herbert
885fb92aad Move final empty result set sending to post-compact 2022-01-26 17:21:57 +09:00
Dean Herbert
791ea0308f Add flag to guard against deadlocks during blocking operations 2022-01-26 17:09:28 +09:00
Dan Balasescu
4a51bab9ac
Merge pull request #16622 from peppy/fix-results-score-switch-crash
Fix crash at results screen when viewing another score panel after playing
2022-01-26 16:59:39 +09:00
Salman Ahmed
a34b8fc4d0 Merge branch 'master' into expandable-controls 2022-01-26 10:36:22 +03:00
Salman Ahmed
161ff45f8c Resolve further UI-related issues 2022-01-26 10:36:18 +03:00
Dean Herbert
11f0f3c17d Revert "Move final result set firing to before the update realm is disposed"
This reverts commit 24bcba6418.
2022-01-26 16:21:24 +09:00
Salman Ahmed
eb83b7fe0a Update existing implementation with changes 2022-01-26 10:18:17 +03:00
Salman Ahmed
6998266770 Add simplified implementation of an expandable slider 2022-01-26 10:18:06 +03:00
Dean Herbert
24bcba6418 Move final result set firing to before the update realm is disposed
Without this, if any registered callback attempts to access
`RealmAccess.Realm` when handling the empty set callback, it will
deadlock the game.
2022-01-26 15:57:06 +09:00
Dean Herbert
68ee80c5de
Merge pull request #16623 from frenzibyte/refactor-editor-save-test
Refactor editor saving test scene for scalability
2022-01-26 15:40:39 +09:00
Salman Ahmed
b5e6352137 Revert SettingsItem<T>-related changes 2022-01-26 09:31:35 +03:00
Dean Herbert
5ea781faef Send unsubscribe actions to synchronization context for consistency and safety 2022-01-26 15:24:53 +09:00
Dean Herbert
4fe3d83fc4 Update framework 2022-01-26 15:21:14 +09:00
Dean Herbert
91e0d1021f Merge branch 'master' into fix-out-of-order-events-on-block-fail 2022-01-26 15:21:10 +09:00
Dean Herbert
267a7bd21f Give RealmUser.Username a better default value 2022-01-26 15:14:49 +09:00
Dean Herbert
9532454e2a Remove ILive remnants 2022-01-26 15:12:07 +09:00
Dean Herbert
ba46827ac0 Merge branch 'master' into playlist-overlay-optimisations 2022-01-26 15:11:14 +09:00
Dan Balasescu
8f85f32f2b
Merge pull request #16619 from peppy/live-no-interface
Remove `ILive<>` interface (and use `abstract Live<>` instead)
2022-01-26 14:54:14 +09:00
Dean Herbert
3491b77c8c Fix ScoreInfo.RealmUser not getting deep cloned correctly
I'm still not at all happy with the play-to-results flow (with multiple
clones), but this will have to do for now.
2022-01-26 14:27:48 +09:00
Dan Balasescu
2e622650de
Merge pull request #16617 from peppy/realm-block-button-sanity
Don't auto-unblock realm when user has manually pressed unblock button
2022-01-26 14:27:37 +09:00
Salman Ahmed
064468faad Refactor editor saving test scene for scalability 2022-01-26 07:57:46 +03:00
Dean Herbert
cd71ec0edd Remove ILive<> interface (and use abstract Live<> instead) 2022-01-26 13:38:56 +09:00
Dean Herbert
d37c3c463e Move statistics to static class 2022-01-26 13:29:12 +09:00
Dean Herbert
7ca73f7e6d Don't auto-unblock realm when user has manually pressed unblock button 2022-01-26 12:51:09 +09:00
Dean Herbert
c7947b3489 Add statistics for Live usage 2022-01-26 12:42:24 +09:00
Dean Herbert
56b06f34f0 Fix RealmLive not refetching if update thread context was closed at some point 2022-01-26 12:32:34 +09:00
Dean Herbert
d76822b685 Avoid creating realm contexts or refetching when accessing RealmLive from the update thread 2022-01-26 12:32:34 +09:00
Dean Herbert
dda513dd08 Change PlaylistOverlay to use ILive 2022-01-26 12:19:59 +09:00
Dean Herbert
64914c45a4 Remove unnecessary realm query helper method 2022-01-26 11:53:50 +09:00
Dean Herbert
bdf215c576
Merge branch 'master' into improve-timeline-zoom 2022-01-26 03:40:53 +09:00
Dean Herbert
1747063fd9
Merge pull request #16610 from frenzibyte/fix-beat-divisor-not-saving
Fix beat divisor no longer saving in editor
2022-01-26 03:40:31 +09:00
Salman Ahmed
4169e5592e Reword event handler name and update xmldoc 2022-01-25 19:36:19 +03:00
Salman Ahmed
d1cbdf63f0 Add support for reading/saving timeline zoom in editor 2022-01-25 18:57:39 +03:00
Dean Herbert
cdef67ccd0 Log posted notifications
To help with test failures and the likes.
2022-01-25 23:38:48 +09:00
Dean Herbert
5b82eaf112
Merge branch 'master' into fix-beat-divisor-not-saving 2022-01-25 23:29:37 +09:00
Dean Herbert
c32c26dc72
Merge pull request #16611 from frenzibyte/isolate-editor-test-beatmap
Recreate working beatmap per-test in `EditorTestScene`
2022-01-25 23:29:20 +09:00
Dan Balasescu
b3aa9310a3
Merge pull request #16607 from peppy/key-binding-container-notification-fix
Fix `DatabasedKeyBindingContainer` re-querying realm on receiving notification
2022-01-25 21:40:21 +09:00
Dean Herbert
4a9f4eecba Use blocking calls to SynchronizationContext to guarantee order of execution 2022-01-25 20:49:52 +09:00
Salman Ahmed
a93873e8ca Recreate test beatmap of EditorTestScene on set up 2022-01-25 13:03:27 +03:00
Salman Ahmed
4d8c5ebb0c
Merge branch 'master' into fix-beat-divisor-not-saving 2022-01-25 12:30:05 +03:00
Salman Ahmed
f7f58b06a1 Fix beat divisor not saving in editor 2022-01-25 11:56:38 +03:00
Dean Herbert
1a776a9587 Completely remove subscription from MusicController 2022-01-25 16:53:02 +09:00
Dean Herbert
2a786f9ec0 Load text only after it comes on screen (and tidy up selection handling logic) 2022-01-25 16:51:21 +09:00
Dean Herbert
ace2bd2208 Apply some initial optimisations to PlaylistItem 2022-01-25 16:51:21 +09:00
Dean Herbert
8a4f3a7ce0 Reimplement subscription logic in PlaylistOverlay directly 2022-01-25 16:51:21 +09:00
Dean Herbert
958cfde608 Stop detaching and exposing beatmaps from MusicController 2022-01-25 16:51:21 +09:00
Dan Balasescu
d8270fe14f
Merge pull request #16604 from peppy/less-async-import
Remove `Task` from the inner-most `Import` method in `RealmArchiveModelImporter`
2022-01-25 16:47:07 +09:00
Dan Balasescu
6e531a574d
Merge pull request #16594 from peppy/realm-subscription-tracking
Add tracking of total realm subscriptions
2022-01-25 16:46:53 +09:00
Dean Herbert
1f9cf00db8 Fix DatabasedKeyBindingContainer re-querying realm on receiving notification 2022-01-25 16:44:44 +09:00
Salman Ahmed
5a9524a74e Decrease default timeline zoom to "6 seconds visible" range 2022-01-25 10:43:51 +03:00
Dean Herbert
1bb1366c9f Fix notification reset events potentially arriving out of order if a block operation times out 2022-01-25 16:26:06 +09:00
Dean Herbert
0d575006fb
Merge pull request #16605 from peppy/fix-collection-db-migrate-crash
Fix crash when trying to migrate collection database that doesn't exist
2022-01-25 16:25:15 +09:00
Dan Balasescu
7f2e66298b
Merge branch 'master' into realm-subscription-tracking 2022-01-25 16:03:21 +09:00
Dan Balasescu
1c6ad56821
Merge pull request #16595 from peppy/realm-block-timeout-assert-failure
Fix a failed `BlockAllOperations` leaving update realm in unretrieved state
2022-01-25 16:03:13 +09:00
Dean Herbert
a46b06ffe8
Merge branch 'master' into realm-subscription-tracking 2022-01-25 15:56:35 +09:00
Dean Herbert
fc58b202b1 Fix crash when trying to migrate collection database that doesn't exist 2022-01-25 15:45:23 +09:00
Dean Herbert
778d2a71b4 Remove Task from the inner-most Import method in RealmArchiveModelImporter
One of my pending work items for post-realm merge.

The lowest-level import task is no longer asynchronous, as we don't want
it to span multiple threads to allow easier interaction with realm.
Removing the `Task` spec simplifies a heap of usages.

Individual usages should decide whether they want to run the import
asynchronously, by either using an alternative override or spooling up a
thread themselves.
2022-01-25 15:30:29 +09:00
Dan Balasescu
47a13c2eb0
Merge pull request #16603 from peppy/update-framework
Update framework
2022-01-25 15:15:49 +09:00
Dean Herbert
35e1c7de7d Merge branch 'master' into realm-block-timeout-assert-failure 2022-01-25 15:05:11 +09:00
Dean Herbert
5fb9b58c9b Add tracking of total subscriptions 2022-01-25 14:51:41 +09:00
Dan Balasescu
05a2d7fbfe
Merge pull request #16591 from peppy/fix-editor-slider-velocity-saving
Don't include nested hit objects' `DifficultyControlPoints` in legacy encoder logic
2022-01-25 14:50:09 +09:00
Dean Herbert
bda77fb6b3
Merge branch 'master' into realm-block-timeout-assert-failure 2022-01-25 14:47:34 +09:00
Dan Balasescu
bfa521bdd2
Merge pull request #16593 from peppy/realm-clean-up
Clean up realm naming
2022-01-25 14:33:53 +09:00
Dean Herbert
5872dabf60 Fix incorrect flag to options conversion 2022-01-25 14:16:15 +09:00
Dean Herbert
9ad4d66e4d Merge branch 'realm-clean-up' into realm-block-timeout-assert-failure 2022-01-25 13:58:36 +09:00
Dean Herbert
a5c76a9647 Fix a few more cases of "context" terminology usage 2022-01-25 13:56:47 +09:00
Dean Herbert
dd2caea694 Update GetSuitableHost usages in line with new HostOptions 2022-01-25 13:52:02 +09:00
Dean Herbert
df1297ade6 Update framework 2022-01-25 13:50:41 +09:00
Dean Herbert
bbcc149e2e During import if files are found to be missing, ensure they are restored
This is one step closer to sanity in terms of physical files. As per the
comment I have left in place, we really should be checking file sizes or
hashes, but to keep things simple and fast I've opted to just cover the
"missing file" scenario for now.

Ran into this when testing against a foreign `client.realm` by:
- Noticing a beatmap doesn't load
- Deleting said beatmap
- Downloading via beatmap overlay
- Beatmap is restored but still doesn't work

Note that I've kept the logic where this will undelete an existing
import rather than create one from fresh, as I think that is beneficial
to the user (ie. it will still keep any linked scores on restore).
2022-01-25 13:44:54 +09:00
Dean Herbert
d7342880f5 Update remaining cases of clashes with realm.Write and realm.RegisterForNotifications 2022-01-25 13:09:48 +09:00
Dean Herbert
e23b10e6a5 Update remaining cases of clashing variable name in realm.Run(realm.. 2022-01-25 13:04:05 +09:00
Dean Herbert
3e5c9e8436 Fix cases of Access instead of Realm 2022-01-25 12:58:15 +09:00
Bartłomiej Dach
8c3fbb6eb4
Merge branch 'master' into Liswiera-FL-changes 2022-01-24 21:32:36 +01:00
Bartłomiej Dach
a227af75ed
Simplify flashlight parameter passing flow 2022-01-24 21:03:02 +01:00
Bartłomiej Dach
5874475dff
Extract DefaultFlashlightSize to base flashlight class 2022-01-24 21:03:02 +01:00
Bartłomiej Dach
a7c0d507ce
Rename flashlight settings to be more accurate 2022-01-24 21:03:02 +01:00
Bartłomiej Dach
da771044a7
Merge branch 'master' into realm-clean-up 2022-01-24 19:15:31 +01:00
Dean Herbert
6f4c337a56 Fix a failed BlockAllOperations leaving update realm in unretrieved state
If the operation timed out on..

```csharp
   throw new TimeoutException(@"Took too long to acquire lock");
```

..from an update thread, it would not restore the update context.

The next call would then fail on the assert that ensures a non-null
context in such cases.

Can add test coverage if required.
2022-01-24 20:53:29 +09:00
Dean Herbert
3bc86ee68f Merge branch 'master' into music-controller-less-population 2022-01-24 20:44:37 +09:00
Dean Herbert
f30894840c Update terminology to realm "instance" rather than "context"
This matches the terminology used by realm themselves, which feels
better.
2022-01-24 20:38:38 +09:00
Dean Herbert
6eb2c28e41 Rename RealmContextFactory to RealmAccess 2022-01-24 20:38:07 +09:00
Dan Balasescu
bb54ad9ad8
Merge pull request #16547 from peppy/realm-stable-subscriptions
Fix realm subscriptions getting lost after a context recycle
2022-01-24 20:20:04 +09:00
Dean Herbert
c3758047fd Don't include nested hit objects' DifficultyControLPoints in legacy encoder logic
The editor doesn't currently propagate velocity to nested objects. We're
not yet sure whether it should or not. For now, let's just ignore nested
objects' `DifficultyControlPoints` for simplicity.

Note that this only affects osu! ruleset due to the pre-check on
`isOsuRuleset`.
2022-01-24 19:54:08 +09:00
mk-56
948867898c ModeMultiplier rename 2022-01-24 11:38:52 +01:00
Dan Balasescu
b396d55758
Merge branch 'master' into realm-stable-subscriptions 2022-01-24 19:01:49 +09:00
Dean Herbert
66c5d77d63 Allow realm migration to run again if interrupted halfway 2022-01-24 18:55:15 +09:00
Dean Herbert
9afa034296 Fix attempt to revive update thread realm context from non-update thread 2022-01-24 18:36:16 +09:00
Dean Herbert
b0919722ac Guard against potential exception while blocking realm 2022-01-24 18:25:48 +09:00
Dean Herbert
9ff9611296 Merge branch 'master' into realm-stable-subscriptions 2022-01-24 18:25:47 +09:00
Dean Herbert
e3083c2477 Fix copy pasted xmldoc 2022-01-24 18:05:30 +09:00
Dean Herbert
bf5bf8d1fd Rename dictionaries to match methods 2022-01-24 17:58:53 +09:00
Dean Herbert
f4e7211ef1 Add xmldoc for RegisterForNotifications 2022-01-24 17:52:36 +09:00
Dean Herbert
abf14f0982 Lock unregistration for sanity 2022-01-24 17:46:53 +09:00
Dean Herbert
52cd906af6 Move context retrieval inside lock 2022-01-24 17:45:31 +09:00
mk-56
161a2a321e Remove bindable from ModeMultiplier 2022-01-24 09:07:07 +01:00
Dean Herbert
e22aea0613 Apply same fix to OsuGameTestScene 2022-01-24 17:05:49 +09:00
Dean Herbert
1e483ece32 Avoid adding "exit all screens" step when running tests interactively 2022-01-24 16:40:16 +09:00
Dean Herbert
d7db6fa918
Merge branch 'master' into custom-meter 2022-01-24 15:46:44 +09:00
Dean Herbert
6581e8c2d3
Merge pull request #16549 from Susko3/LoginPanel-flag
Hide the login panel when clicking the country flag
2022-01-24 15:38:50 +09:00
Dean Herbert
cb319cebdb Refactor naming and add more comments to help understanding in RealmContextFactory subscription logic 2022-01-24 14:48:55 +09:00
Dean Herbert
40aa873190 Rename register methods to better explain their purpose 2022-01-24 14:37:36 +09:00
Dean Herbert
d7a9c5fd41 Add settings buttons to allow temporarily blocking realm access 2022-01-24 14:36:57 +09:00
Dean Herbert
997c13f643 Add locking over realmSubscriptionsResetMap for sanity 2022-01-24 13:36:51 +09:00
mk-56
ed84ae0ac0 Adjust values to Bdach's refined taste 2022-01-24 00:42:43 +01:00
Bartłomiej Dach
838a9f69ed
Fix saved beatmap filename depending on ToString() implementation 2022-01-23 20:28:30 +01:00
Bartłomiej Dach
bd748686fa
Adjust spacing of time signature numerator input box 2022-01-23 15:21:32 +01:00
Bartłomiej Dach
4e5a1f27a8
Initialise Simple{Triple,Quadruple} only once ever rather than create every time 2022-01-23 15:21:25 +01:00
Dean Herbert
351c766ea1 Fix one remaining instance of realm query as property 2022-01-23 23:20:03 +09:00
Dean Herbert
deb1670862 Use Array.Empty instead of constructed list 2022-01-23 23:18:50 +09:00
Dean Herbert
249f0f9697
Add more lengthy comment explaining cyclic avoidance
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-01-23 23:15:39 +09:00
Dean Herbert
5e7993c35a Post disposal to synchronisation context 2022-01-23 20:43:25 +09:00
Dean Herbert
e9e3e024a1 Update all usages of QueryAsyncWithNotifications to use new Register pathway 2022-01-23 20:28:04 +09:00
Dean Herbert
61cef42be9 Proof of concept realm subscriptions via Register 2022-01-23 20:28:04 +09:00
Dean Herbert
f39ff1eacb Add unregistration on blocking
This is the first part of the requirement of sending a `ChangeSet` event
to ensure correct state during blocking time
2022-01-23 20:27:57 +09:00
Dean Herbert
bd0eda7e90 Use method instead of property for realm query retrieval 2022-01-23 18:01:39 +09:00
Dean Herbert
70a120ea8a Add missing lock coverage when using subscriptionActions dictionary 2022-01-23 18:00:24 +09:00
Dean Herbert
a5493ce0d1 Fix incorrect nesting of statements causing completely broken logic 2022-01-23 17:51:32 +09:00
Salman Ahmed
e4758c9dbb Mark LabelledTimeSignature as public 2022-01-23 10:14:37 +03:00
Henry Lin
48aa1677dc Include hit results of nested hit objects in statistics of perfect score 2022-01-23 11:01:30 +08:00
Salman Ahmed
648e7f6bbc Handle controls with dragging state wrapped in underlying components
I'm not 100% sure about this approach but it'll do for now.
2022-01-23 05:41:16 +03:00
Salman Ahmed
f4c7a332c3 Add IExpandable support for SettingsItem<T> 2022-01-23 05:41:16 +03:00
Salman Ahmed
326f12f847 Add IExpandable support for SettingsToolboxGroup 2022-01-23 05:41:16 +03:00
Salman Ahmed
62a2bccd76 Abstractify expansion logic from ExpandingButtonContainer 2022-01-23 05:41:16 +03:00
Bartłomiej Dach
54f7b1b8d0
Use new time signature control on timing screen 2022-01-22 20:50:32 +01:00
Bartłomiej Dach
f39f2c93b5
Add control for arbitrary-numerator time signatures 2022-01-22 20:50:31 +01:00
Bartłomiej Dach
735414bc49
Replace TimeSignatures enum with struct for storage of arbitrary meter 2022-01-22 20:50:31 +01:00
mk-56
955bab926f Separate the settings for each modes radiuses 2022-01-22 19:38:56 +01:00
MK56
b5f813a949
Merge branch 'ppy:master' into Liswiera-FL-changes 2022-01-22 19:04:39 +01:00
Dean Herbert
33d3a10708
Merge branch 'master' into fix-intro-realm-usage 2022-01-22 23:28:43 +09:00
Bartłomiej Dach
7e68371d28
Move log statement about migration completed closer to rest of migration code 2022-01-22 14:20:28 +01:00
Bartłomiej Dach
1ce0b18003
Merge branch 'master' into display-performance-attributes 2022-01-22 14:12:57 +01:00
Bartłomiej Dach
1b2cca4a0d
Merge branch 'master' into realm-migration-ui 2022-01-22 13:52:19 +01:00
Bartłomiej Dach
c99f227879
Remove no longer used resolved storage 2022-01-22 13:48:49 +01:00
Dean Herbert
1a591beb7d Merge branch 'realm-context-use-update-when-feasible' into fix-intro-realm-usage 2022-01-22 16:30:07 +09:00
Dean Herbert
287d70d728 Merge branch 'realm-stable-subscriptions' into music-controller-less-population 2022-01-22 14:37:39 +09:00
Dean Herbert
8470fcf135
Merge branch 'master' into music-controller-less-population 2022-01-22 13:25:43 +09:00
Dean Herbert
6a076a684e Merge branch 'realm-context-use-update-when-feasible' into realm-stable-subscriptions 2022-01-22 13:14:25 +09:00
Dean Herbert
25dbe6b27c Fix unused null assignment 2022-01-22 12:58:30 +09:00
Dean Herbert
cdcf0947e6 Merge branch 'master' into realm-context-use-update-when-feasible 2022-01-22 12:09:18 +09:00
Dean Herbert
7025191fdd
Move target field outside of Run usage
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2022-01-22 12:02:44 +09:00
Dean Herbert
b23f4674b1
Update outdated exception message
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2022-01-22 12:02:18 +09:00
Dean Herbert
daed0b04dc Remove using statements 2022-01-22 11:54:40 +09:00
Dean Herbert
855ef3fa92 Create backup before any realm contexts are used 2022-01-22 11:52:46 +09:00
Dean Herbert
9946003069
Update osu.Game/Screens/Menu/IntroScreen.cs
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2022-01-22 05:09:40 +09:00
Dean Herbert
8ef50ff42d Add safety to ensure RealmLiveUnmanaged is not used with managed instances 2022-01-22 02:13:08 +09:00
Salman Ahmed
81b07dee56 Introduce IExpandable interface 2022-01-21 18:41:19 +03:00
Dean Herbert
ad3a01dc06 Use a more reliable method of reviving the update thread realm after blocking 2022-01-21 22:44:56 +09:00
Susko3
529610ee2e Call the UserPanel Action when clicking on the flag 2022-01-21 14:01:49 +01:00
Dean Herbert
3b11235d3c Fix potentially cyclic subscription registration if a subscription's delegate accesses Context 2022-01-21 20:45:10 +09:00
Dean Herbert
a86c0014fe Remove unnecessary exception/check 2022-01-21 20:07:43 +09:00
Dean Herbert
63226f7def Remove pointless initial MusicController beatmap set population
Looks to pass tests and all usages look safe enough.
2022-01-21 20:05:35 +09:00
Dean Herbert
1f157d729d Update existing subscriptions to new style
Fix missing detach calls in `MusicController`
2022-01-21 20:05:03 +09:00
Dean Herbert
45aea9add5 Implement full subscription flow 2022-01-21 19:06:23 +09:00
Dean Herbert
18bf690a30 Add Register method for subscription purposes and update safeties 2022-01-21 19:06:18 +09:00
Dean Herbert
2006620a2c Fix IntroScreen retrieving and iterating all realm beatmap sets 2022-01-21 18:03:16 +09:00
Dean Herbert
8f1dfa33a2 Merge branch 'master' into realm-context-use-update-when-feasible 2022-01-21 18:03:09 +09:00
Dean Herbert
495636538f Add forced refresh on GetAllUsableBeatmapSets()
This is commonly used in tests in a way where it's not feasible to
guarantee correct results unless a refresh is called. This method
shouldn't really be used outside of tests anyway, but that's for a
folow-up effort.
2022-01-21 17:33:29 +09:00
Dean Herbert
81b5717ae7 Fix RealmLive failing to retrieve due to lack of refresh 2022-01-21 17:33:03 +09:00
Dean Herbert
d2655c0825 Fix RealmLive not necessarily being in refreshed state due to potentially using update context 2022-01-21 17:27:30 +09:00
Dean Herbert
114c9e8c1f Update all usages of CreateContext to use either Run or Write 2022-01-21 17:27:08 +09:00
Dean Herbert
da0a803e6c Add RealmContextFactory.Write helper method 2022-01-21 17:08:05 +09:00
Dean Herbert
a59105635e Make CreateContext private 2022-01-21 16:40:20 +09:00
Dean Herbert
dde10d1ba2 Remove unused IRealmFactory interface 2022-01-21 16:38:07 +09:00
Dean Herbert
3bcdce128c Use dictionary add for safety 2022-01-21 15:29:21 +09:00
Dean Herbert
ff4f40db8a Merge branch 'master' into carousel-performance-n 2022-01-21 15:27:42 +09:00
Dan Balasescu
c4f24ef96c
Merge pull request #16542 from peppy/carousel-search-performance-less-simple
Avoid performing full filter when updating carousel beatmap sets
2022-01-21 15:05:30 +09:00
Dean Herbert
5622d2ba4f Show realm migration progress at Loader 2022-01-21 14:56:49 +09:00
Dean Herbert
5be41a189b Expose EF context factory for use in external migration logic 2022-01-21 14:56:28 +09:00
Dan Balasescu
d6d9efae60
Merge pull request #16541 from peppy/carousel-search-performance-simple
Avoid performing keyword filtering at song select unless keywords are specified
2022-01-21 13:35:43 +09:00
Dean Herbert
bed7b69464 Apply NRT to CarouselGroup 2022-01-21 13:26:29 +09:00
Dean Herbert
5b24800b0e Avoid applying filter in UpdateBeatmapSet flow 2022-01-21 13:26:25 +09:00
Dean Herbert
45bf35c425 Avoid performing keyword filtering at song select unless keywords are specified 2022-01-21 12:26:24 +09:00
Henry Lin
e0fe8af365 Schedule setPerformanceValue 2022-01-21 08:54:08 +08:00
Dean Herbert
a5d2047f05 Fix various cases of creating realm contexts from update thread when not necessary 2022-01-21 01:44:56 +09:00
Dean Herbert
0c9eb3ad61 Add realm factory helper methods to run work on the correct context
Avoids constructing a new `Realm` instance when called from the update
thread without worrying about disposal.
2022-01-21 01:33:47 +09:00
Dean Herbert
7aad2780b1 Add retry logic for realm backup creation 2022-01-21 00:46:53 +09:00
Dean Herbert
079b2dfc42 Create backup of databases before opening contexts
Attempt to avoid file IO issues.

Closes #16531.
2022-01-21 00:46:53 +09:00
Dean Herbert
ba31ddee01 Revert beatmapSets reference to fix tests
New version changed order.
2022-01-21 00:34:12 +09:00
Dean Herbert
80f3a67876 Use for instead of foreach to avoid enumerator overhead 2022-01-20 22:21:00 +09:00
Dean Herbert
0b93f3c88f Add <Guid,CarouselBeatmapSet> dictionary to speed up update operations in carousel 2022-01-20 22:12:49 +09:00
Dean Herbert
9a864267d2 Fix CarouselGroupEagerSelect not invoking subclassed AddChild from AddChildren calls 2022-01-20 21:57:16 +09:00
Dean Herbert
a8ce2c5edf Detach before sending BeatmapSetInfo to any handling method 2022-01-20 21:14:10 +09:00
Dan Balasescu
1a20725162
Merge pull request #16529 from peppy/fix-realm-subscription-overhead
Remove all calls to `Realm.Refresh` to fix blocking overhead from subscriptions
2022-01-20 20:58:11 +09:00
Dan Balasescu
c986c1b702
Merge pull request #16523 from peppy/realm-async-carousel-load
Use asynchronous loading for beatmap carousel again
2022-01-20 20:55:48 +09:00
Dean Herbert
5df46d0a54 Remove all calls to Realm.Refresh to fix blocking overhead from subscriptions
Turns out this is not required if realm is aware of a
`SynchronizationContext`. See
https://github.com/realm/realm-dotnet/discussions/2775#discussioncomment-2005412
for further reading.
2022-01-20 20:23:18 +09:00
Dean Herbert
b1cf3befa6 Fix incorrect query in comment 2022-01-20 18:36:20 +09:00
Dan Balasescu
cab63830a1
Merge pull request #16527 from peppy/remove-parameterless-beatmapinfo-ctor-usage
Avoid constructor allocation/GC overhead in realm implicit constructors
2022-01-20 18:11:35 +09:00
Dean Herbert
3ba712703b Add a note about hidden beatmap check 2022-01-20 17:50:17 +09:00
Dean Herbert
4235fb317d Remove unnecessary detach operation 2022-01-20 17:35:32 +09:00
Dean Herbert
0bd7486a83 Avoid constructor overhead for realm SkinInfo parameterless constructor 2022-01-20 17:29:07 +09:00
Dean Herbert
70cc03fe43 Avoid constructor overhead for realm RealmKeyBinding parameterless constructor 2022-01-20 17:29:07 +09:00
Dean Herbert
6c10531df2 Avoid constructor overhead for realm BeatmapMetadata parameterless constructor 2022-01-20 17:14:51 +09:00
Dean Herbert
deb108816c Fix some regressions in json output (we need to make all these explicit instead) 2022-01-20 17:09:31 +09:00
Dean Herbert
ccddf9b47d Avoid constructor overhead for realm BeatmapSetInfo parameterless constructor 2022-01-20 17:03:44 +09:00
Dean Herbert
3c852e6d02 Avoid constructor overhead for realm ScoreInfo parameterless constructor 2022-01-20 16:47:27 +09:00
Dean Herbert
3faf980fed Avoid constructor overhead for realm BeatmapInfo parameterless constructor 2022-01-20 16:47:27 +09:00
Dean Herbert
1dabf6c8a5 Fix BeatmapCarousel signalling it is finished loading before catching up on realm changes 2022-01-20 16:39:42 +09:00
Dan Balasescu
64fe7d8dd3
Merge pull request #16520 from peppy/refresh-after-migrate
Improve realm migration performance further
2022-01-20 14:38:23 +09:00
Dan Balasescu
7509b31176
Merge pull request #16519 from peppy/fix-legacy-score-import-classic-mod
Fix legacy score imports not correctly getting classic mod assigned
2022-01-20 14:28:29 +09:00
Dan Balasescu
4f86a2cb61
Merge pull request #16525 from bdach/beatmap-listing-overflow-and-scrolling
Improve usability of expanded card content on beatmap listing
2022-01-20 14:14:44 +09:00
Henry Lin
6c97fbd3f2 Calculate perfect performance without caching 2022-01-20 13:06:00 +08:00
Henry Lin
42d904acee Remove blocking calls and add back Task.WhenAll 2022-01-20 12:50:28 +08:00
Henry Lin
261fae6873 Move checks out of PopIn() 2022-01-20 08:39:33 +08:00
Bartłomiej Dach
b8184a3005
Fix news sidebar assuming returned posts are always from given year 2022-01-19 23:13:30 +01:00
Bartłomiej Dach
4cad5890c6
Add test coverage for news sidebar showing wrong headers 2022-01-19 23:12:35 +01:00
Bartłomiej Dach
247c557eaf
Fix expanded content scrollbar inadvertently hiding expanded content 2022-01-19 22:30:49 +01:00
Bartłomiej Dach
77748a5f93
Show scrollbar on expanded card content where applicable 2022-01-19 22:21:08 +01:00
Bartłomiej Dach
33ab356dc5
Fix expanded card content being clipped on beatmap listing overlay 2022-01-19 22:10:05 +01:00
Dean Herbert
a27a3b308c Remove duplicate setters 2022-01-20 04:34:00 +09:00
Dean Herbert
6c46fd6931 Fix some failing tests due to realm beatmaps overwriting test beatmaps 2022-01-20 00:19:16 +09:00
Dean Herbert
9435464eb3
Merge branch 'master' into realm-async-carousel-load 2022-01-19 18:25:31 +09:00
Dean Herbert
4b127d5029
Merge pull request #16522 from peppy/detach-before-hidden-check
Detach beatmap set before checking hidden state
2022-01-19 18:25:23 +09:00
Dean Herbert
2789986699 Use asynchronous loading for beatmap carousel again 2022-01-19 18:15:43 +09:00
Henry Lin
dd42c89260 Feed more info to the temporary score processor for more accurate total score 2022-01-19 16:08:45 +08:00
Dan Balasescu
ddd1699621
Merge pull request #16521 from peppy/backup-collections
Backup collections alongside main databases when migrating to realm
2022-01-19 17:02:49 +09:00
Dean Herbert
200fcb6f83 Detach beatmap set before checking hidden state 2022-01-19 16:59:49 +09:00
Henry Lin
0d708efb73 Split off PerformanceBreakdown and its own calculation logic 2022-01-19 15:33:33 +08:00
Dean Herbert
fad66d7682 Backup collections alongside main databases when migrating to realm 2022-01-19 16:31:36 +09:00
Dean Herbert
aa93042aa3 Centralise backup code and also run on skin/settings migrations 2022-01-19 16:31:36 +09:00
Dean Herbert
fd5198d667 Avoid using parameterless constructors in migration code
Minor performance improvement (less garbage).
2022-01-19 16:22:18 +09:00
Dean Herbert
42736c9995 Add transactional committing of scores/beatmaps
This helps slightly with performance, allows better monitoring via realm
studio, but most importantly greatly reduces filesize.

fully compacted:        109M
transaction size 100:   115M
transaction size 1000:  123M
transaction size 10000: 164M
single transaction:     183M

With a transaction size of 100 there is a performance reduction, so 1000
seems to be the best middle-ground.
2022-01-19 16:08:48 +09:00
Dean Herbert
973836484c Avoid using a write context for EF migration
This reduces a stall delay as EF tries to process changes over tracked
objects during disposal of the context.
2022-01-19 15:56:58 +09:00
Dean Herbert
faec62be51 Force a realm refresh after migration
This really shouldn't have much effect as it will be run in the first
`Update` method and is probably a noop (we are already pointing to the
newest version due to just performing writes), but seems like a safe addition.

In general `Realm.Refresh()` only really does anything when there's multithreaded
usage and notifications to be sent.
2022-01-19 15:56:58 +09:00
Dan Balasescu
9920ff51a6
Merge pull request #16446 from peppy/summary-timeline-control-point-optimisation
Reduce number of redundant control points displayed on summary timeline
2022-01-19 15:51:20 +09:00
Dan Balasescu
2475a62f2d
Merge pull request #16518 from nekodex/participantlist-cleanup
Remove unused BDL parameter in `ParticipantList`
2022-01-19 14:59:40 +09:00
Dean Herbert
5f5765d6a2 Reduce redundancy time range to create a bit more visual blending on the timeline 2022-01-19 14:57:01 +09:00
Dean Herbert
03ac91a3ee Consider all points in a group to meet redundancy check 2022-01-19 14:56:44 +09:00
Dean Herbert
93cd07f7fb Merge branch 'master' into summary-timeline-control-point-optimisation 2022-01-19 14:50:45 +09:00
Dan Balasescu
fdf65aa2ff
Merge pull request #16502 from peppy/realm/remove-ef-migrations
Remove all EF migrations and helper methods
2022-01-19 14:43:45 +09:00
Dan Balasescu
aa6466dfa4
Merge pull request #16499 from peppy/realm-integration/faster-migration
Improve performance of migration to realm
2022-01-19 14:43:33 +09:00
Dean Herbert
18886f5d2e Use empty string instead of empty array for ModsJson when no mods are present
Not really correct, but this is how most scores have been stored until
now so let's do this for consistency.
2022-01-19 14:34:27 +09:00
Dean Herbert
664b4fdaf0 Fix legacy score imports not correctly getting classic mod assigned 2022-01-19 14:34:27 +09:00
Dan Balasescu
581873f944
Merge pull request #16497 from peppy/top-local-rank-optimisation
Rewrite `TopLocalRank` to use realm subscriptions
2022-01-19 14:22:12 +09:00
Jamie Taylor
493a970ed5
Remove unused AudioManager 2022-01-19 14:08:21 +09:00
Dan Balasescu
3407b34b11
Merge branch 'master' into realm/remove-ef-migrations 2022-01-19 14:01:34 +09:00
Dan Balasescu
0b1736def6
Merge branch 'master' into realm-integration/faster-migration 2022-01-19 13:54:14 +09:00
Dan Balasescu
3e5d29ed00
Merge pull request #16505 from peppy/remove-base-difficulty-usage
Remove all usage of `BaseDifficulty` (and access `Difficulty` instead)
2022-01-19 13:53:55 +09:00
Dan Balasescu
9c8f7795b7
Merge pull request #16510 from peppy/optimise-set-detach-part-2
Avoid file retrieval overhead when detaching `BeatmapSetInfo`
2022-01-19 13:53:34 +09:00
Dan Balasescu
a0336c6fc2
Merge pull request #16495 from peppy/realm-integration/reinit-on-corrupt
Add support for starting with a fresh realm database if the existing one is not usable
2022-01-19 13:30:14 +09:00
Dean Herbert
9be5bf38c6 Simplify binding/invalidation in TopLocalRank 2022-01-19 13:20:52 +09:00
Dan Balasescu
2556f1cb87
Merge branch 'master' into optimise-set-detach-part-2 2022-01-19 13:20:38 +09:00
Dan Balasescu
d663fcd045
Merge pull request #16508 from peppy/optimise-set-detach
Create separate automapper configurations to reduce cyclic detach overhead
2022-01-19 13:20:25 +09:00
Dean Herbert
e60fd358d0 Merge branch 'master' into top-local-rank-optimisation 2022-01-19 13:04:14 +09:00
Dean Herbert
d440197fb3 Merge branch 'master' into realm-integration/faster-migration 2022-01-19 12:56:42 +09:00
Dean Herbert
2363130f8b Add back BaseDifficulty with obsoletion counter to account for custom rulesets 2022-01-19 12:33:56 +09:00
Dean Herbert
ad4d9789ad Merge branch 'master' into realm-integration/reinit-on-corrupt 2022-01-19 12:31:56 +09:00
Dan Balasescu
f6f44029e8
Merge pull request #16507 from peppy/more-ingore-rules
Add some missing `IgnoredAttributes` to reduce automapper overhead
2022-01-19 12:26:37 +09:00
Dean Herbert
fb558a3189 Merge branch 'master' into realm-integration/reinit-on-corrupt 2022-01-19 12:26:24 +09:00
Dan Balasescu
8c120c6bfb
Merge pull request #16491 from peppy/realm-integration/safer-migration
Improve safety and logging of realm migration process
2022-01-19 12:23:48 +09:00
Dan Balasescu
c52899b1fb Rename property 2022-01-19 11:56:44 +09:00
Dean Herbert
261b4988f9 Only catch RealmExceptions to avoid blocking the nested TimeoutException 2022-01-19 10:58:59 +09:00