only show a comp win when it is no longer animating from a hide() call

this should greatly reduce pixmap tearing when mousing through menus quickly
This commit is contained in:
Mike Blumenkrantz 2013-07-26 12:25:31 +01:00
parent 6f1bbcf029
commit f7496d1d35
1 changed files with 9 additions and 1 deletions

View File

@ -1549,6 +1549,14 @@ _e_comp_done_defer(E_Comp_Win *cw)
cw->c->animating--;
}
cw->animating = 0;
if (cw->visible && cw->win && cw->real_hid)
{
/* window show event occurred during hide animation */
//INF("UNSETTING real_hid %p:%u", cw, cw->win);
_e_comp_win_damage(cw, cw->x, cw->y, cw->w, cw->h, 0);
_e_comp_child_hide(cw);
cw->real_hid = 0;
}
_e_comp_win_render_queue(cw);
cw->force = 1;
if (cw->defer_hide) _e_comp_win_hide(cw);
@ -2468,7 +2476,7 @@ _e_comp_win_show(E_Comp_Win *cw)
if (cw->real_hid)
{
DBG(" [0x%x] real hid - fix", cw->win);
cw->real_hid = 0;
cw->real_hid = cw->animating;
if (cw->native)
{
evas_object_image_native_surface_set(cw->obj, NULL);