-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
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
Treat unready Wayland windows as focused #8953
base: main
Are you sure you want to change the base?
Conversation
This does fix the long startup time when building bevy with wayland but after some testing #7974 does not seem to be wayland exclusive...the long startup time can be observed on x11 (xwayland) too |
@@ -63,6 +63,9 @@ pub(crate) fn create_window<'a>( | |||
&mut accessibility_requested, | |||
); | |||
|
|||
#[cfg(not(feature = "wayland"))] | |||
window.internal.set_ready(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removing this line seems to fix wayland as well as x11 (xwayland)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Simply removing this line would be incorrect, because then the windows would always be considered focused. If we can reassure that Winit will always send a WindowEvent::Focused(true)
event after creating the window, we could replace feature = "wayland
with any(feature = "wayland", feature = "x11")
.
However, I couldn't reproduce the long startup time bug using x11 on my machine (XWayland Version 23.1.2).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ic
I am using the same xwayland version and I can reproduce the long startup time on sway (version 1.8.1)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, I could also reproduce the issue when using X11 through XWayland on Sway. but not when using X11 through XWayland on Gnome.
I tried out treating X11 the same as Wayland and tested X11 on
- Gnome (Xorg)
- Gnome (Wayland) using XWayland
- Sway using XWayland
The long startup time was fixed in all three cases, but Sway showed a small delay (around 1 second) which I believe had to do with the fact that I have an Nvidia GPU and had to use the --unsupported-gpu
option. It would be nice if you could confirm that there is no issue using X11 on Sway with the latest commit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for looking into this! With the latest commit running a xwayland bevy app has no startup delay.
The long startup time was fixed in all three cases, but Sway showed a small delay (around 1 second) which I believe had to do with the fact that I have an Nvidia GPU and had to use the --unsupported-gpu option. It would be nice if you could confirm that there is no issue using X11 on Sway with the latest commit.
I don't think this is a Nvidia GPU problem. I have an AMD GPU and experience around 4 sec startup delay with a native wayland bevy app. This delay does not exist on xwayland bevy for me.
Objective
WinitSettings.unfocused_mode
is set toUpdateMode::Reactive
#7974.Solution
ready
field toInternalWindowState
to distinguish between ready and unready windows.WindowEvent::Focused
events for unready windows, which keeps Wayland windows to be considered as focused.WinitSettings.unfocused_mode
is set toUpdateMode::Reactive
#7974 (comment).Changelog
set_ready
andis_ready
methods toInternalWindowState
.