diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index dadc70a40..9600e4f42 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -2804,15 +2804,13 @@ _e_comp_x_damage(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_Dam E_Client *ec; Ecore_X_Rectangle *rects = NULL; int n = 0; - Eina_Bool skip = EINA_FALSE; + Eina_Bool skip; ec = _e_comp_x_client_find_by_damage(ev->damage); if ((!ec) || e_object_is_del(E_OBJECT(ec))) return ECORE_CALLBACK_PASS_ON; + skip = ec->shape_rects_num > 50; if (ec->override && (!_e_comp_x_client_data_get(ec)->first_damage)) - { - e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h); - skip = EINA_TRUE; - } + skip = EINA_TRUE; if (_e_comp_x_client_data_get(ec)->damage) { Ecore_X_Region parts; @@ -2828,6 +2826,8 @@ _e_comp_x_damage(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_Dam if (e_comp->nocomp) e_pixmap_dirty(ec->pixmap); + else if (skip) + e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h); else if (n) { int i;