forked from enlightenment/efl
wayland: Try not to draw into surfaces without roles
xdg v6 will barf if we attach a buffer to the surface before we receive a configure - even if we attach before trying to make a shell surface. So we need to prevent any drawing into surfaces until we've decided what kind of surface they'll ultimately be. Fix T5090
This commit is contained in:
parent
5411dba596
commit
0669ca31ff
|
@ -176,6 +176,8 @@ _cb_global_add(void *data, struct wl_registry *registry, unsigned int id, const
|
||||||
if ((window->type != ECORE_WL2_WINDOW_TYPE_DND) &&
|
if ((window->type != ECORE_WL2_WINDOW_TYPE_DND) &&
|
||||||
(window->type != ECORE_WL2_WINDOW_TYPE_NONE))
|
(window->type != ECORE_WL2_WINDOW_TYPE_NONE))
|
||||||
_ecore_wl2_window_shell_surface_init(window);
|
_ecore_wl2_window_shell_surface_init(window);
|
||||||
|
else
|
||||||
|
window->pending.configure = EINA_FALSE;
|
||||||
}
|
}
|
||||||
else if (!strcmp(interface, "zxdg_shell_v6"))
|
else if (!strcmp(interface, "zxdg_shell_v6"))
|
||||||
{
|
{
|
||||||
|
|
|
@ -512,6 +512,7 @@ _ecore_wl2_window_shell_surface_init(Ecore_Wl2_Window *window)
|
||||||
&_xdg_surface_listener, window);
|
&_xdg_surface_listener, window);
|
||||||
|
|
||||||
window->configure_ack = xdg_surface_ack_configure;
|
window->configure_ack = xdg_surface_ack_configure;
|
||||||
|
window->pending.configure = EINA_FALSE;
|
||||||
_ecore_wl2_window_type_set(window);
|
_ecore_wl2_window_type_set(window);
|
||||||
}
|
}
|
||||||
else if ((window->display->wl.wl_shell) && (!window->wl_shell_surface))
|
else if ((window->display->wl.wl_shell) && (!window->wl_shell_surface))
|
||||||
|
@ -528,6 +529,7 @@ _ecore_wl2_window_shell_surface_init(Ecore_Wl2_Window *window)
|
||||||
|
|
||||||
wl_shell_surface_add_listener(window->wl_shell_surface,
|
wl_shell_surface_add_listener(window->wl_shell_surface,
|
||||||
&_wl_shell_surface_listener, window);
|
&_wl_shell_surface_listener, window);
|
||||||
|
window->pending.configure = EINA_FALSE;
|
||||||
_ecore_wl2_window_type_set(window);
|
_ecore_wl2_window_type_set(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -615,6 +617,8 @@ ecore_wl2_window_new(Ecore_Wl2_Display *display, Ecore_Wl2_Window *parent, int x
|
||||||
|
|
||||||
win->type = ECORE_WL2_WINDOW_TYPE_TOPLEVEL;
|
win->type = ECORE_WL2_WINDOW_TYPE_TOPLEVEL;
|
||||||
|
|
||||||
|
win->pending.configure = EINA_TRUE;
|
||||||
|
|
||||||
display->windows =
|
display->windows =
|
||||||
eina_inlist_append(display->windows, EINA_INLIST_GET(win));
|
eina_inlist_append(display->windows, EINA_INLIST_GET(win));
|
||||||
|
|
||||||
|
@ -668,6 +672,8 @@ ecore_wl2_window_show(Ecore_Wl2_Window *window)
|
||||||
_ecore_wl2_window_shell_surface_init(window);
|
_ecore_wl2_window_shell_surface_init(window);
|
||||||
_ecore_wl2_window_www_surface_init(window);
|
_ecore_wl2_window_www_surface_init(window);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
window->pending.configure = EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
|
|
Loading…
Reference in New Issue