From ac86429a2c878d688ff280720126e2c38baa9d3f Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 10 May 2016 11:34:48 -0400 Subject: [PATCH] manage pending state list more effectively in wl shell fix T3433 --- src/modules/wl_desktop_shell/e_mod_main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/wl_desktop_shell/e_mod_main.c b/src/modules/wl_desktop_shell/e_mod_main.c index 076f65225..f599acaaa 100644 --- a/src/modules/wl_desktop_shell/e_mod_main.c +++ b/src/modules/wl_desktop_shell/e_mod_main.c @@ -918,6 +918,7 @@ _e_xdg_shell_surface_cb_ack_configure(struct wl_client *client EINA_UNUSED, stru E_Client *ec; Pending_State *ps; E_Shell_Data *shd; + Eina_List *l, *ll; ec = wl_resource_get_user_data(resource); if (!ec) @@ -928,7 +929,7 @@ _e_xdg_shell_surface_cb_ack_configure(struct wl_client *client EINA_UNUSED, stru } if (e_object_is_del(E_OBJECT(ec))) return; shd = ec->comp_data->shell.data; - EINA_LIST_FREE(shd->pending, ps) + EINA_LIST_FOREACH_SAFE(shd->pending, l, ll, ps) { if (ps->serial > serial) break; if (ps->state & STATE_FULLSCREEN) @@ -951,6 +952,7 @@ _e_xdg_shell_surface_cb_ack_configure(struct wl_client *client EINA_UNUSED, stru ec->comp_data->shell.set.unmaximize = 1; ec->comp_data->shell.set.maximize = 0; } + shd->pending = eina_list_remove_list(shd->pending, l); free(ps); } }