Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Song preview in multiplayer keeps playing in-game if played at the same time the lobby is started #31115

Open
Pablito3234 opened this issue Dec 13, 2024 · 4 comments

Comments

@Pablito3234
Copy link

Type

Game behaviour

Bug description

Pretty self descriptive, in a multiplayer lobby, if a song preview is played simultaneously with the start of the lobby, the preview will continue to play even after the game begins. Although the timing window for this issue is narrow, I was able to reliably reproduce it.

Screenshots or videos

osu.lazer.bug.demonstration.mp4

Version

2024.1208.0-lazer

Logs

compressed-logs.zip

@peppy
Copy link
Member

peppy commented Dec 16, 2024

I can see how this can happen

previewTrackManager.StopAnyPlaying(this);

But I'm not sure on a fix. We really need this call to be after the screen finishes fading out I guess.

@Joehuu
Copy link
Member

Joehuu commented Dec 21, 2024

This was fixed on overlays in #27898.

Would also need to be done on daily challenge:

previewTrackManager.StopAnyPlaying(this);

@peppy
Copy link
Member

peppy commented Dec 24, 2024

The problem is, we don't have an event for a screen being completely suspended, and I'm not sure I'd trust the transform OnComplete here... although I guess that's what was done in the other case so maybe it will work??

@frenzibyte
Copy link
Member

frenzibyte commented Dec 24, 2024

Seeing that this issue is happening in more general places, I would be in favour of introducing proper events raised when a screen fully suspends/exits managed explicitly by ScreenStack rather than relying on local transform complete callbacks that may be interrupted by the ScreenStack's own handling of every screen's lifetime.

Either that or more generally wrapping any existing StopAnyPlaying call with this.DelayUntilTransformsFinished so as to not perform while the screen/overlay is still present/interactive.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants