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

60167 Commits

Author SHA1 Message Date
Bartłomiej Dach
7cedbca9be
Merge branch 'master' into multiplier-doesnt-update-with-preset-mod 2023-04-30 17:36:00 +02:00
Bartłomiej Dach
2e3daf0a54
Fix leak of ModSettingChangeTracker instances
The `SelectedMods.BindValueChanged()` callback in `ModSelectOverlay` can
in some instances run recursively. This is most heavily leaned on in
scenarios where `SelectedMods` is updated by an external component. In
such cases, the mod select overlay needs to replace the mod instances
received externally with mod instances which it owns, so that the changes
made on the overlay can propagate outwards.

This in particular means that prior to this commit, it was possible to
encounter the following scenario:

	modSettingChangeTracker?.Dispose();
	updateFromExternalSelection(); // mutates SelectedMods to perform the replacement
	                               // therefore causing a recursive call

		modSettingChangeTracker?.Dispose();
		// inner call continues
		modSettingChangeTracker = new ModSettingChangeTracker(SelectedMods.Value);

	// outer call continues
	modSettingChangeTracker = new ModSettingChangeTracker(SelectedMods.Value);

This leaks one `modSettingChangeTracker` instance from the inner call,
which is never disposed.

To avoid this, move the disposal to the same side of the recursion that
the creation happens on, changing the call pattern to:

	updateFromExternalSelection(); // mutates SelectedMods to perform the replacement
	                               // therefore causing a recursive call

		modSettingChangeTracker?.Dispose();
		// inner call continues
		modSettingChangeTracker = new ModSettingChangeTracker(SelectedMods.Value);

	modSettingChangeTracker?.Dispose();
	// outer call continues
	modSettingChangeTracker = new ModSettingChangeTracker(SelectedMods.Value);

which, while slightly wasteful, does not cause any leaks.

The solution is definitely suboptimal, but addressing this properly
would entail a major rewrite of the mod instance management in the mods
overlay, which is probably not the wisest move to make right now.
2023-04-30 17:31:41 +02:00
Bartłomiej Dach
d35355970f
Add test case covering failure scenario 2023-04-30 17:23:45 +02:00
OliBomby
79f3cfec91 fix 0 velocity juicestream 2023-04-30 16:43:26 +02:00
Terochi
fb4b681cc5 Use Queue instead of Stack 2023-04-30 16:36:01 +02:00
Terochi
8f02bd80f9 Addressed changes 2023-04-30 16:11:52 +02:00
OliBomby
e7a478ce9c Update convert-samples-expected-conversion.json 2023-04-30 16:04:03 +02:00
OliBomby
1eb2e35dff fix ticks not being generated by default 2023-04-30 16:03:58 +02:00
Terochi
949dc1c0f9 Improved logic 2023-04-30 12:05:55 +02:00
Dean Herbert
72b472a756 Change default scaling and add note about legacy cursor-ripple scale 2023-04-30 14:48:03 +09:00
Dean Herbert
6a62949fcd Fix positioning and rewinding support for ripples 2023-04-30 14:48:03 +09:00
Dean Herbert
c994adfc22 Add pooling support for ripples 2023-04-30 14:48:03 +09:00
Dean Herbert
a4ae9e409b Implement ripples (legacy and default) 2023-04-30 14:48:03 +09:00
Dean Herbert
b39a9d816e Add basic structural requirements for cursor ripples 2023-04-30 14:48:03 +09:00
Terochi
585318400c Refactor tests 2023-04-30 02:32:20 +02:00
Terochi
8ec2154965 Fixed ApplyStateChange to happen in correct order 2023-04-30 02:01:18 +02:00
Terochi
9a9e02b110 Added tests 2023-04-30 02:00:35 +02:00
OliBomby
83111223e0 fix null sample 2023-04-30 01:08:52 +02:00
OliBomby
a6e780a1b9 Update CheckMutedObjectsTest.cs 2023-04-29 23:52:30 +02:00
OliBomby
92efd04f31 fix sample of drumroll ticks being bankless 2023-04-29 23:52:24 +02:00
OliBomby
ffcc8e91b2 fix legacy parser incorrectly assigning sample info for sliders 2023-04-29 23:51:49 +02:00
Terochi
17e4b75dfd Save first state when editing 2023-04-29 20:54:19 +02:00
Terochi
3b0ba4b38b Improved logic for ApplyStateChange for skin editor 2023-04-29 19:52:22 +02:00
Bartłomiej Dach
6a04708a7e
Merge pull request #23332 from peppy/fix-exclusive-fullscreen-detection
Fix exclusive fullscreen notice showing false positives for new renderers
2023-04-29 15:30:04 +02:00
Bartłomiej Dach
646d4965b9
Merge branch 'master' into fix-exclusive-fullscreen-detection 2023-04-29 14:39:34 +02:00
Dean Herbert
119687cf6e
Merge pull request #23329 from rltn/clickable-country-name-in-profile
Clickable country name in profile
2023-04-29 14:19:13 +09:00
Dean Herbert
8df5410946
Merge pull request #23333 from Cootz/add-events-for-loading-screen
Fix editor potentially leaving a dangling beatmap if exiting during load too fast
2023-04-29 11:57:24 +09:00
Dean Herbert
602a276884
Merge branch 'master' into add-events-for-loading-screen 2023-04-29 11:05:45 +09:00
Dean Herbert
2643100644 Add xmldoc to new test mentioning failure rate and general purpose 2023-04-29 11:05:10 +09:00
Dean Herbert
32f8c674f4 Extract beatmap retrieval method for more legibility 2023-04-29 11:01:29 +09:00
Dean Herbert
a6f0186112 Improve legibility and code quality of new test 2023-04-29 10:51:56 +09:00
Dean Herbert
428b5fad3c Rename test scene to explicitly mention navigation testing 2023-04-29 10:51:56 +09:00
Cootz
d9b3c97179 Fix testing 2023-04-29 10:29:33 +09:00
Cootz
c5357d30ab Add test 2023-04-29 10:29:33 +09:00
Cootz
607a04ae73 Fix the issue 2023-04-29 10:29:33 +09:00
_ltn
2d6c0d2900 use of Child instead of Children 2023-04-28 19:24:07 +03:00
OliBomby
f7c84030ac remove bank default value 2023-04-28 17:22:34 +02:00
Dean Herbert
6929be49b7 Change condition for exclusive fullscreen notice to only show when using the correct renderer
This avoids the notice showing when running on windows, but using the
newer renderers (where the underlying logic hasn't been tested properly
and can result in false-positives).

Supersedes https://github.com/ppy/osu-framework/pull/5759 as a more
correct implementation.
2023-04-28 22:36:30 +09:00
_ltn
4b0ee392f6 add OsuHoverContainer 2023-04-28 05:48:54 +03:00
_ltn
17730f05bc remove UpdateableCountryText 2023-04-28 05:47:05 +03:00
Dean Herbert
6308bef0c8
Merge pull request #23325 from sw1tchbl4d3r/taiko_aspect_limit
Fix extreme aspect ratios in taiko
2023-04-28 09:39:53 +09:00
_ltn
4d144cd5b5 clearing the code 2023-04-28 02:06:13 +03:00
_ltn
092377fdaa moving UpdateableCountryText 2023-04-28 01:47:14 +03:00
_ltn
e9843f2066 replace country text object 2023-04-28 01:16:50 +03:00
_ltn
b13201fb79 UpdateableCountryText rewrite 2023-04-28 01:14:42 +03:00
_ltn
f5c652325a Create UpdateableCountryText.cs 2023-04-27 23:44:18 +03:00
Bartłomiej Dach
1959c2daeb
Merge pull request #23307 from peppy/fix-storyboard-loop-end-time
Fix some storyboard loops not playing for as long as expected
2023-04-26 22:42:45 +02:00
Bartłomiej Dach
07efa7d660
Merge branch 'master' into fix-storyboard-loop-end-time 2023-04-26 21:53:26 +02:00
OliBomby
354cd23874 removed all usage of hitobject's DifficultyControlPoint 2023-04-26 18:17:02 +02:00
sw1tchbl4d3
76df5fd3e2 Limit taiko playfield aspect ratio to 5:4 - 16:9 2023-04-26 18:05:47 +02:00