From: Doyoun Kang Date: Mon, 20 Apr 2020 23:44:39 +0000 (+0900) Subject: e_comp_object: add E_COMP_OBJECT_HOOK_LAYER_SET hook X-Git-Tag: submit/tizen/20200420.234739^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b20ae5aa51741f5f64d5ea130651a98436bcde42;p=platform%2Fupstream%2Fenlightenment.git e_comp_object: add E_COMP_OBJECT_HOOK_LAYER_SET hook Change-Id: I311b1ad070128f082fe736ec897e4b6d1c5ec80c --- diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index eea510c842..1d4899ba72 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -196,6 +196,7 @@ static Eina_Inlist *_e_comp_object_hooks[] = [E_COMP_OBJECT_HOOK_EFFECT_START] = NULL, [E_COMP_OBJECT_HOOK_EFFECT_END] = NULL, [E_COMP_OBJECT_HOOK_RESTACK] = NULL, + [E_COMP_OBJECT_HOOK_LAYER_SET] = NULL, }; #ifdef _F_E_COMP_OBJECT_INTERCEPT_HOOK_ @@ -224,6 +225,7 @@ static void _e_comp_object_dim_enable_set(E_Client *ec, Evas_Object *o static Eina_Bool _e_comp_object_dim_enable_get(E_Client *ec, Evas_Object *obj); static void _e_comp_object_dim_update(E_Comp_Object *cw); static void _e_comp_object_native_surface_set(E_Comp_Object *cw, Evas_Native_Surface *ns, Eina_Bool with_mirror); +static void _e_comp_object_layer_set(Evas_Object *obj, short layer); static E_Client *dim_client = NULL; @@ -253,6 +255,7 @@ _e_comp_object_hook_call(E_Comp_Object_Hook_Point hookpoint, E_Client *ec) { if ((hookpoint != E_COMP_OBJECT_HOOK_EFFECT_START) && (hookpoint != E_COMP_OBJECT_HOOK_EFFECT_END) && + (hookpoint != E_COMP_OBJECT_HOOK_LAYER_SET) && (hookpoint != E_COMP_OBJECT_HOOK_RESTACK)) { return ret; @@ -1649,7 +1652,7 @@ _e_comp_intercept_layer_set(void *data, Evas_Object *obj, int layer) if ((cw->ec->layer_block) || (cw->ec->layer_pending)) { /* doing a compositor effect, follow directions */ - evas_object_layer_set(obj, layer); + _e_comp_object_layer_set(obj, layer); if (layer == cw->ec->layer) //trying to put layer back { E_Client *ec; @@ -1743,7 +1746,7 @@ layer_set: _e_comp_object_layers_add(cw, NULL, NULL, 0); //if (cw->ec->new_client) //INF("CLIENT STACKED %p: %u", cw->ec, layer); - evas_object_layer_set(obj, layer); + _e_comp_object_layer_set(obj, layer); if (!e_comp->layers[cw->layer].obj) return; //this is a layer marker evas_object_stack_below(obj, e_comp->layers[cw->layer].obj); if (evas_object_below_get(obj) == e_comp->layers[cw->layer].obj) @@ -1810,6 +1813,19 @@ _e_comp_object_stack_below(Evas_Object *obj, Evas_Object *target) } } +static void +_e_comp_object_layer_set(Evas_Object *obj, short layer) +{ + evas_object_layer_set(obj, layer); + + if (evas_object_smart_smart_get(obj)) + { + E_Client *ec = e_comp_object_client_get(obj); + if (ec) + _e_comp_object_hook_call(E_COMP_OBJECT_HOOK_LAYER_SET, ec); + } +} + static Eina_Bool _e_comp_object_is_pending(E_Client *ec) { diff --git a/src/bin/e_comp_object.h b/src/bin/e_comp_object.h index a04babaeaa..c8b8beaddf 100644 --- a/src/bin/e_comp_object.h +++ b/src/bin/e_comp_object.h @@ -48,6 +48,7 @@ typedef enum _E_Comp_Object_Hook_Point E_COMP_OBJECT_HOOK_EFFECT_START, E_COMP_OBJECT_HOOK_EFFECT_END, E_COMP_OBJECT_HOOK_RESTACK, + E_COMP_OBJECT_HOOK_LAYER_SET, E_COMP_OBJECT_HOOK_LAST, } E_Comp_Object_Hook_Point;