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
devs/discomfitor/action_route
Mike Blumenkrantz 6 years ago
parent 0a67a96df3
commit 63f3fe949c
  1. 1
      src/bin/e_client.c
  2. 2
      src/bin/e_comp.c
  3. 1
      src/bin/e_comp.h

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

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

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

Loading…
Cancel
Save