add wl client flag to indicate status of xdg6 pre-buffer configure

ensure that initial configure is not sent more than once

ref T5044
This commit is contained in:
Mike Blumenkrantz 2017-03-10 15:57:15 -05:00
parent fece2ab5bf
commit a7f708d568
3 changed files with 6 additions and 1 deletions

View File

@ -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;

View File

@ -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

View File

@ -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;