block "user" client resizes during comp client updating phase

resizing objects triggers clip resizes and further event feeding which
can propagate mouse events such that clients try to resize themselves
during the update phase, resulting in illegal compositor behavior
This commit is contained in:
Mike Blumenkrantz 2017-06-24 12:18:04 -04:00
parent 0a67a96df3
commit 63f3fe949c
3 changed files with 4 additions and 0 deletions

View File

@ -988,6 +988,7 @@ _e_client_resize_handle(E_Client *ec)
int tw, th;
Eina_List *skiplist = NULL;
if (e_comp->updating) return;
x = ec->x;
y = ec->y;
w = ec->w;

View File

@ -376,6 +376,7 @@ _e_comp_cb_update(void)
if (e_comp->grab_cb) e_comp->grab_cb();
e_comp->grabbed = 1;
}
e_comp->updating = 1;
l = e_comp->updates;
e_comp->updates = NULL;
EINA_LIST_FREE(l, ec)
@ -384,6 +385,7 @@ _e_comp_cb_update(void)
e_comp_object_render_update_del(ec->frame);
_e_comp_client_update(ec);
}
e_comp->updating = 0;
_e_comp_fps_update();
if (conf->fps_show)
{

View File

@ -170,6 +170,7 @@ struct _E_Comp
Eina_Bool shape_queue_blocked : 1; //x11 input shape updates are blocked
Eina_Bool rendering : 1; // we've received a pre-render callback but no post-render yet.
Eina_Bool updating : 1; // running client updates
};