discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=a7f708d568b9d8b9e67f3aba60c102199e539ab1
commit a7f708d568b9d8b9e67f3aba60c102199e539ab1 Author: Mike Blumenkrantz <[email protected]> Date: Fri Mar 10 15:57:15 2017 -0500 add wl client flag to indicate status of xdg6 pre-buffer configure ensure that initial configure is not sent more than once ref T5044 --- src/bin/e_comp_wl.c | 2 +- src/bin/e_comp_wl.h | 1 + src/modules/wl_desktop_shell/xdg6.c | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index ef5dabe..9ed79ea 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -1499,7 +1499,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state) ec->want_focus |= ec->icccm.accepts_focus && (!ec->override); } } - else if (first && ec->comp_data->shell.surface) + else if (ec->comp_data->need_xdg6_configure && ec->comp_data->shell.surface) _e_comp_wl_configure_send(ec, 0); state->sx = 0; diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h index 41e9b51..cbb246f 100644 --- a/src/bin/e_comp_wl.h +++ b/src/bin/e_comp_wl.h @@ -356,6 +356,7 @@ struct _E_Comp_Wl_Client_Data Eina_Bool is_xdg_surface : 1; Eina_Bool grab : 1; Eina_Bool buffer_commit : 1; + Eina_Bool need_xdg6_configure : 1; }; struct _E_Comp_Wl_Output diff --git a/src/modules/wl_desktop_shell/xdg6.c b/src/modules/wl_desktop_shell/xdg6.c index b6d34de..b112df1 100644 --- a/src/modules/wl_desktop_shell/xdg6.c +++ b/src/modules/wl_desktop_shell/xdg6.c @@ -363,6 +363,7 @@ _xdg_shell_surface_send_configure(struct wl_resource *resource, Eina_Bool fullsc zxdg_surface_v6_send_configure(shd->surface, serial); wl_array_release(&states); + ec->comp_data->need_xdg6_configure = 0; } static void @@ -388,6 +389,7 @@ _e_xdg_shell_surface_configure_send(struct wl_resource *resource, uint32_t edges serial = wl_display_next_serial(e_comp_wl->wl.disp); zxdg_popup_v6_send_configure(resource, ec->x - ec->parent->x, ec->y - ec->parent->y, width ?: ec->w, height ?: ec->h); zxdg_surface_v6_send_configure(shd->surface, serial); + ec->comp_data->need_xdg6_configure = 0; return; } @@ -918,6 +920,7 @@ _e_xdg_surface_cb_popup_get(struct wl_client *client, struct wl_resource *resour cdata->shell.configure = _e_xdg_shell_surface_configure; cdata->shell.map = _e_xdg_shell_surface_map; cdata->shell.unmap = _e_xdg_shell_surface_unmap; + cdata->need_xdg6_configure = 1; if (!ec->internal) ec->borderless = !ec->internal_elm_win; @@ -1219,6 +1222,7 @@ _e_xdg_surface_cb_toplevel_get(struct wl_client *client EINA_UNUSED, struct wl_r cdata->shell.configure = _e_xdg_shell_surface_configure; cdata->shell.map = _e_xdg_shell_surface_map; cdata->shell.unmap = _e_xdg_shell_surface_unmap; + cdata->need_xdg6_configure = 1; /* set toplevel client properties */ ec->icccm.accepts_focus = 1; --
