diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h b/src/lib/ecore_wl2/ecore_wl2_private.h index 56a8c0ce9a..49b80f8d3f 100644 --- a/src/lib/ecore_wl2/ecore_wl2_private.h +++ b/src/lib/ecore_wl2/ecore_wl2_private.h @@ -186,6 +186,11 @@ struct _Ecore_Wl2_Window Eina_Bool input_set : 1; Eina_Bool opaque_set : 1; + + struct + { + Eina_Bool configure : 1; + } pending; }; struct _Ecore_Wl2_Output diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c index a51edcac57..978641f177 100644 --- a/src/lib/ecore_wl2/ecore_wl2_window.c +++ b/src/lib/ecore_wl2/ecore_wl2_window.c @@ -187,9 +187,14 @@ static const struct xdg_surface_listener _xdg_surface_listener = }; static void -_zxdg_surface_cb_configure(void *data EINA_UNUSED, struct zxdg_surface_v6 *zxdg_surface, uint32_t serial) +_zxdg_surface_cb_configure(void *data, struct zxdg_surface_v6 *zxdg_surface EINA_UNUSED, uint32_t serial EINA_UNUSED) { + Ecore_Wl2_Window *window; + zxdg_surface_v6_ack_configure(zxdg_surface, serial); + + window = data; + window->pending.configure = EINA_FALSE; } static const struct zxdg_surface_v6_listener _zxdg_surface_listener = @@ -487,6 +492,8 @@ _ecore_wl2_window_shell_surface_init(Ecore_Wl2_Window *window) window->zxdg_configure_ack = zxdg_surface_v6_ack_configure; _ecore_wl2_window_type_set(window); + window->pending.configure = EINA_TRUE; + /* TODO: surface commit needed ? */ wl_surface_commit(window->surface); }