reduce shape recalc for clients which cannot currently receive input

This commit is contained in:
Mike Blumenkrantz 2014-12-07 20:16:42 -05:00
parent 610c439abd
commit 28d6eecceb
1 changed files with 15 additions and 5 deletions

View File

@ -646,6 +646,8 @@ _e_comp_object_done_defer(void *data, Evas_Object *obj EINA_UNUSED, const char *
/* hide only after animation finishes to guarantee a full run of the animation */ /* hide only after animation finishes to guarantee a full run of the animation */
if (cw->defer_hide && (!strcmp(emission, "e,action,hide,done"))) if (cw->defer_hide && (!strcmp(emission, "e,action,hide,done")))
evas_object_hide(cw->smart_obj); evas_object_hide(cw->smart_obj);
else if (!cw->animating)
e_comp_shape_queue(cw->comp);
} }
///////////////////////////////////////////// /////////////////////////////////////////////
@ -1970,8 +1972,11 @@ _e_comp_smart_show(Evas_Object *obj)
if (cw->ec->internal_elm_win && (!evas_object_visible_get(cw->ec->internal_elm_win))) if (cw->ec->internal_elm_win && (!evas_object_visible_get(cw->ec->internal_elm_win)))
evas_object_show(cw->ec->internal_elm_win); evas_object_show(cw->ec->internal_elm_win);
e_comp_render_queue(cw->comp); e_comp_render_queue(cw->comp);
e_comp_shape_queue(cw->comp); if (cw->ec->input_only)
if (cw->ec->input_only) return; {
e_comp_shape_queue(cw->comp);
return;
}
if (cw->ec->iconic && (!cw->ec->new_client)) if (cw->ec->iconic && (!cw->ec->new_client))
e_comp_object_signal_emit(cw->smart_obj, "e,action,uniconify", "e"); e_comp_object_signal_emit(cw->smart_obj, "e,action,uniconify", "e");
else else
@ -1983,7 +1988,10 @@ _e_comp_smart_show(Evas_Object *obj)
} }
/* ensure some random effect doesn't lock the client offscreen */ /* ensure some random effect doesn't lock the client offscreen */
if (!cw->animating) if (!cw->animating)
e_comp_object_effect_set(obj, NULL); {
e_comp_object_effect_set(obj, NULL);
e_comp_shape_queue(cw->comp);
}
} }
static void static void
@ -2106,7 +2114,8 @@ _e_comp_smart_resize(Evas_Object *obj, int w, int h)
} }
if (!cw->visible) return; if (!cw->visible) return;
e_comp_render_queue(cw->comp); e_comp_render_queue(cw->comp);
e_comp_shape_queue(cw->comp); if (!cw->animating)
e_comp_shape_queue(cw->comp);
} }
static void static void
@ -3502,7 +3511,8 @@ _e_comp_object_effect_end_cb(void *data, Evas_Object *obj, const char *emission,
{ {
cw->comp->animating--; cw->comp->animating--;
cw->animating--; cw->animating--;
e_object_unref(E_OBJECT(cw->ec)); if (e_object_unref(E_OBJECT(cw->ec)))
e_comp_shape_queue(cw->comp);
} }
end_cb = evas_object_data_get(obj, "_e_comp.end_cb"); end_cb = evas_object_data_get(obj, "_e_comp.end_cb");