From f7496d1d357142c7f89c07639eddf83b080a54db Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 26 Jul 2013 12:25:31 +0100 Subject: [PATCH] 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 --- src/bin/e_comp.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index 018474963..f9c1cb376 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -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);