mirror of
https://github.com/brl/mutter.git
synced 2024-12-27 05:12:15 +00:00
core: Don't unmap XWayland windows without buffers on visibility update
18be74ed
was changing meta_window_should_be_showing_on_workspace() to
only show XWayland windows when they have buffers to prevent starting
transitions with a seemingly black window.
This however did not just delay the transition, but when called in
meta_window_update_visibility() could result in the X11 window getting
unmapped again if the call happens before there is a buffer. Then,
depending on the client, the window would either remain hidden or if the
client tries to map the window again, this would repeat the process,
triggering the closing transition every time.
This commit instead just hides the XWayland window from the compositor
but keeps the corresponding X11 window mapped while it does not have a
buffer yet.
Related: https://gitlab.gnome.org/GNOME/mutter/-/issues/2611
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2965
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2820
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2867
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3194>
This commit is contained in:
parent
d10533cc1c
commit
133931e3a3
@ -1688,8 +1688,11 @@ gboolean
|
||||
meta_window_should_be_showing_on_workspace (MetaWindow *window,
|
||||
MetaWorkspace *workspace)
|
||||
{
|
||||
if (!window_has_buffer (window))
|
||||
#ifdef HAVE_WAYLAND
|
||||
if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND &&
|
||||
!window_has_buffer (window))
|
||||
return FALSE;
|
||||
#endif
|
||||
|
||||
if (window->client_type == META_WINDOW_CLIENT_TYPE_X11 &&
|
||||
window->decorated && !window->frame)
|
||||
@ -2217,7 +2220,7 @@ meta_window_show (MetaWindow *window)
|
||||
set_wm_state (window);
|
||||
}
|
||||
|
||||
if (!window->visible_to_compositor)
|
||||
if (!window->visible_to_compositor && window_has_buffer (window))
|
||||
{
|
||||
MetaCompEffect effect = META_COMP_EFFECT_NONE;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user