derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=0669ca31ff898a691c2333214189aff0dab410f2
commit 0669ca31ff898a691c2333214189aff0dab410f2 Author: Derek Foreman <der...@osg.samsung.com> Date: Thu Jan 19 15:25:17 2017 -0600 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 --- src/lib/ecore_wl2/ecore_wl2_display.c | 2 ++ src/lib/ecore_wl2/ecore_wl2_window.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/lib/ecore_wl2/ecore_wl2_display.c b/src/lib/ecore_wl2/ecore_wl2_display.c index 99e7334..c2fc38d 100644 --- a/src/lib/ecore_wl2/ecore_wl2_display.c +++ b/src/lib/ecore_wl2/ecore_wl2_display.c @@ -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) && (window->type != ECORE_WL2_WINDOW_TYPE_NONE)) _ecore_wl2_window_shell_surface_init(window); + else + window->pending.configure = EINA_FALSE; } else if (!strcmp(interface, "zxdg_shell_v6")) { diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c index 327185c..8acb7d5 100644 --- a/src/lib/ecore_wl2/ecore_wl2_window.c +++ b/src/lib/ecore_wl2/ecore_wl2_window.c @@ -512,6 +512,7 @@ _ecore_wl2_window_shell_surface_init(Ecore_Wl2_Window *window) &_xdg_surface_listener, window); window->configure_ack = xdg_surface_ack_configure; + window->pending.configure = EINA_FALSE; _ecore_wl2_window_type_set(window); } 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_listener, window); + window->pending.configure = EINA_FALSE; _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->pending.configure = EINA_TRUE; + display->windows = 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_www_surface_init(window); } + else + window->pending.configure = EINA_FALSE; } EAPI void --