1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-15 15:05:34 +08:00

Reapply schedule workaround for PreviewTrack

This commit is contained in:
Dean Herbert 2021-11-26 22:34:05 +09:00
parent 35a347ce60
commit f16ef1ee69

View File

@ -97,6 +97,7 @@ namespace osu.Game.Beatmaps.Drawables.Cards.Buttons
if (previewTrack == null) if (previewTrack == null)
{ {
toggleLoading(true); toggleLoading(true);
LoadComponentAsync(previewTrack = previewTrackManager.Get(beatmapSetInfo), onPreviewLoaded); LoadComponentAsync(previewTrack = previewTrackManager.Get(beatmapSetInfo), onPreviewLoaded);
} }
else else
@ -111,6 +112,10 @@ namespace osu.Game.Beatmaps.Drawables.Cards.Buttons
} }
private void onPreviewLoaded(PreviewTrack loadedPreview) private void onPreviewLoaded(PreviewTrack loadedPreview)
{
// Make sure that we schedule to after the next audio frame to fix crashes in single-threaded execution.
// See: https://github.com/ppy/osu-framework/issues/4692
Schedule(() =>
{ {
// another async load might have completed before this one. // another async load might have completed before this one.
// if so, do not make any changes. // if so, do not make any changes.
@ -124,6 +129,7 @@ namespace osu.Game.Beatmaps.Drawables.Cards.Buttons
if (Playing.Value) if (Playing.Value)
tryStartPreview(); tryStartPreview();
});
} }
private void tryStartPreview() private void tryStartPreview()