redo X first_damage logic

the main idea here is to not DRAW at the time of the first damage to avoid overdraw, but ignoring the fact that the region is ready to be drawn can be problematic when the drawing eventually occurs. best choice here is to keep the region but not the render update
This commit is contained in:
Mike Blumenkrantz 2014-01-30 11:54:06 -05:00
parent 340e02efb5
commit 752c220482
1 changed files with 6 additions and 8 deletions

View File

@ -2495,19 +2495,17 @@ _e_comp_x_damage(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_Dam
ecore_x_damage_subtract(ec->comp_data->damage, 0, parts);
ecore_x_region_free(parts);
}
if (!ec->comp_data->first_damage)
{
ec->comp_data->first_damage = 1;
if (!ec->re_manage)
return ECORE_CALLBACK_RENEW;
}
E_FREE_FUNC(ec->comp_data->first_draw_delay, ecore_timer_del);
//WRN("DAMAGE %p: %dx%d", ec, ev->area.width, ev->area.height);
if (ec->comp->nocomp)
e_pixmap_dirty(ec->pixmap);
else
e_comp_object_damage(ec->frame, ev->area.x, ev->area.y, ev->area.width, ev->area.height);
if ((!ec->re_manage) && (!ec->comp_data->first_damage))
e_comp_object_render_update_del(ec->frame);
else
E_FREE_FUNC(ec->comp_data->first_draw_delay, ecore_timer_del);
ec->comp_data->first_damage = 1;
return ECORE_CALLBACK_RENEW;
}