forked from enlightenment/enlightenment
subtract x11 client damage region even when forcing full override damage
fix T2785
This commit is contained in:
parent
f6be761226
commit
98c44950b1
|
@ -2804,18 +2804,23 @@ _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;
|
||||
|
||||
ec = _e_comp_x_client_find_by_damage(ev->damage);
|
||||
if ((!ec) || e_object_is_del(E_OBJECT(ec))) return ECORE_CALLBACK_PASS_ON;
|
||||
if (ec->override && (!_e_comp_x_client_data_get(ec)->first_damage))
|
||||
{
|
||||
e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
|
||||
else if (_e_comp_x_client_data_get(ec)->damage)
|
||||
skip = EINA_TRUE;
|
||||
}
|
||||
if (_e_comp_x_client_data_get(ec)->damage)
|
||||
{
|
||||
Ecore_X_Region parts;
|
||||
Ecore_X_Rectangle bounds;
|
||||
|
||||
parts = ecore_x_region_new(NULL, 0);
|
||||
ecore_x_damage_subtract(_e_comp_x_client_data_get(ec)->damage, 0, parts);
|
||||
if (!skip)
|
||||
rects = ecore_x_region_fetch(parts, &n, &bounds);
|
||||
ecore_x_region_free(parts);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue