Commit Graph

249 Commits

Author SHA1 Message Date
Dean Herbert 307cc5581d
Fix usage of locked context without locking
Raised in the latest Rider EAP, seems valid enough.
2024-10-01 18:01:06 +09:00
Dean Herbert 3978d4babb Crop and disable mipmaps on beatmap panel backgrounds
This is an effort to improve general performance at song select. At
least on the metal renderer, I can notice very high draw frame overheads
related to texture uploads.

By reducing the size of the texture uploads to roughly match what is
actually being displayed on screen (using a relatively inexpensive crop
operation), we can bastly reduce stuttering both during initial load and
carousel scroll.

You might ask if it's safe to disable mipmapping, but I've tested with
lower resolutions and bilinear filtering seems to handle just fine.
Bilinear without mipmaps only falls apart when you scale below 50% and
we're not going too far past that at minimum game scale, if at all.
2023-06-08 16:51:07 +09:00
Dean Herbert a842f79ad4 Refactor `IWorkingBeatmap.Background` to `GetBackground()` 2023-06-08 16:19:32 +09:00
Dan Balasescu d2380bd840 Remove usages of [ExcludeFromDynamicCompile] 2023-05-08 18:12:56 +09:00
Salman Ahmed 30de9ba795 Dispose previous waveform on track reload 2022-12-23 00:35:59 +03:00
ansel 20370bd5ae Invalidate waveform on track load 2022-12-22 20:49:09 +03:00
ansel d0645ce151 Rewrite waveform invalidation 2022-12-22 15:59:51 +03:00
ansel 66a02374da Clear cached waveform on track change in editor 2022-12-22 01:23:24 +03:00
Dean Herbert db148d145b Fix incorrect offset logic for beatmaps without a preview point specified 2022-10-12 14:47:37 +09:00
Dean Herbert 721bfb5369 Rename parameter to read better 2022-10-12 14:46:35 +09:00
NotGumballer91 3cd6ce8e3f
Update WorkingBeatmap.cs 2022-10-11 01:48:55 +08:00
NotGumballer91 749dc40062
Update WorkingBeatmap.cs 2022-10-10 21:03:11 +08:00
andy840119 e62999fb16 Merge branch 'master' of https://github.com/ppy/osu into remove-the-nullable-disable-in-the-ruleset
# Conflicts:
#	osu.Game.Rulesets.Catch/CatchRuleset.cs
#	osu.Game.Rulesets.Osu/OsuRuleset.cs
#	osu.Game.Rulesets.Taiko/TaikoRuleset.cs
#	osu.Game/Rulesets/Ruleset.cs
2022-09-10 10:40:12 +08:00
Dean Herbert ad3dd1c700 Fix a couple of oversights regarding `track` nullability 2022-08-25 14:45:00 +09:00
Dean Herbert 37799e3b31 Allow preparing preview point without looping 2022-08-17 13:20:24 +09:00
為什麼 57c6763556 Mark the `CreateBeatmapProcessor()` as nullable.
Also, should add the null check in the working beatmap.
2022-07-10 10:15:27 +08:00
Dan Balasescu f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +09:00
Salman Ahmed a17eed64f9 Use `Track` to ensure its loaded before transferring 2022-05-21 16:52:16 +03:00
Salman Ahmed a42f5ea34e Bring back virtual track condition given its cheapness
Will still keep the override in `ClockBackedTestWorkingBeatmap` because
it still relies on a local track store and will fail the moment it uses
a non-virtual track.
2022-05-21 16:51:56 +03:00
Salman Ahmed 466ed3c791
Fix wrong return xmldoc
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-05-21 16:43:31 +03:00
Salman Ahmed c78d90ccbd Refactor track transferring logic for ability to override and disallow 2022-05-20 14:43:07 +03:00
Dean Herbert 552ec5282f Change `WorkingBeatmap.GetVirtualTrack` to use length provided by `BeatmapInfo`
A lot of tests are using test resources that populate the length field,
but do not populate hitobjects. The general expectation is that
components should be using the cached length in cases where hitobjects
are not relevant, but `GetVirtualTrack` was doing its own local
calculation.

This could cause tests to fail due to `MusicController` changing track
in the background.
2022-04-06 14:51:15 +09:00
Dean Herbert df088f96f4 Fix incorrect `Metadata`-related null checks 2022-01-12 16:39:36 +09:00
Dean Herbert 00177a3ae1 Update usages to new naming 2022-01-06 22:54:43 +09:00
Dean Herbert 73b40e6833 Replace usage of `.Result` with `.WaitSafelyForResult` 2022-01-04 11:51:41 +09:00
Dean Herbert bc47801cbb Revert "Apply NRT to `WorkingBeatmap`"
This reverts commit 9e17d7d4e3.
2021-12-22 19:14:18 +09:00
Dean Herbert 9e17d7d4e3 Apply NRT to `WorkingBeatmap` 2021-12-22 18:41:45 +09:00
Dean Herbert 53c0a6708f Move public accessor properties to top of file 2021-12-22 18:25:09 +09:00
Dean Herbert a5f77a86ef Move load methods and rename `loadedTrack` to match other private fields 2021-12-22 18:24:51 +09:00
Dean Herbert 7344c87b16 Remove `RecyclableLazy` 2021-12-22 18:18:12 +09:00
Dean Herbert f3f491374b Remove unused load checks 2021-12-22 18:17:00 +09:00
Dean Herbert 3c95497ed7 Reorder methods to hopefully make more sense 2021-12-22 18:17:00 +09:00
Dean Herbert e38e4c0adc Enable NRT on `IWorkingBeatmap` 2021-12-22 18:17:00 +09:00
Dean Herbert 967419c9ac Remove `BeatmapSetInfo` and `Metadata` from interface
There were very few accesses to this, and after realm they should all be
done via the `BeatmapInfo`, so let's remove this.
2021-12-22 18:17:00 +09:00
Dean Herbert 1b0af78831 Simplify `WorkingBeatmap` in multiple ways
Just a clean-up pass.
2021-12-22 18:17:00 +09:00
Dean Herbert b38b300159 Convert `BeatmapMetadata` access to be via a computed property 2021-12-22 18:17:00 +09:00
Bartłomiej Dach bb8e8bc4f0
Use consistent type for mod collection in all overloads 2021-11-21 11:30:45 +01:00
Bartłomiej Dach 6100bf66a6
Clean up cancellation handling in `WorkingBeatmap`
After the recent changes introducing cancellation support to
`WorkingBeatmap`, it turned out that if the cancellation support was
used, `GetPlayableBeatmap()` would raise timeout exceptions rather than
the expected `OperationCanceledException`.

To that end, split off a separate overload for the typical usage, that
catches `OperationCanceledException` and converts them to beatmap load
timeout exceptions, and use normal `OperationCanceledException`s in the
overload that requires a cancellation token to work.
2021-11-20 17:23:55 +01:00
Dean Herbert bf8507c7b9 Only apply default timeout when debugger not attached 2021-11-18 23:26:45 +09:00
Bartłomiej Dach 1c13b39104
Revert incorrect ordering change 2021-11-17 22:10:46 +01:00
Dean Herbert 0715d40ea0 Merge branch 'master' into beatmap-cancellation-token 2021-11-17 11:16:10 +09:00
Dean Herbert 13f3e2eea9 Add back default timeout to `GetPlayableBeatmap` 2021-11-17 11:06:31 +09:00
Dean Herbert f5c52755c9 Merge branch 'master' into i-working-beatmap/difficulty-calculator 2021-11-16 16:19:22 +09:00
Dean Herbert d2a7670494 Remove no longer used helper method 2021-11-16 14:48:02 +09:00
Dean Herbert 6cca657a2d Standardise naming of `CancellationToken` parameters 2021-11-16 14:45:51 +09:00
Dean Herbert 53c0682a08 Merge branch 'master' into beatmap-cancellation-token 2021-11-16 14:43:13 +09:00
Dan Balasescu 1d87b47fec Remove now-unnecessary R# disables 2021-11-15 19:40:31 +09:00
Dean Herbert a90cfb4a2f Implement remaining properties via implicit implementation rather than interface methods 2021-11-15 19:30:46 +09:00
Dean Herbert 369b4ba789 Update `DifficultyCalculator` to take an `IRulesetInfo` 2021-11-15 19:16:48 +09:00
Dean Herbert a0e25d18cd Expose more of `WorkingBeatmap` via interface 2021-11-15 18:25:48 +09:00