From 69c41929275a56f883ca868c1b83e409f1599fb2 Mon Sep 17 00:00:00 2001 From: MinJeong Kim Date: Fri, 18 Nov 2016 11:08:16 +0900 Subject: [PATCH 01/16] Packaging: update version to 0.1.8 Change-Id: I58294ee4a7e88bfdf3ff31cc48296af0d79025b1 --- packaging/e-mod-tizen-effect.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-mod-tizen-effect.spec b/packaging/e-mod-tizen-effect.spec index f53b191..1113aac 100644 --- a/packaging/e-mod-tizen-effect.spec +++ b/packaging/e-mod-tizen-effect.spec @@ -1,5 +1,5 @@ Name: e-mod-tizen-effect -Version: 0.1.7 +Version: 0.1.8 Release: 1 Summary: The effect module for the enlightenment URL: http://www.enlightenment.org -- 2.7.4 From efe4ab8a860ed4e541b48175c57c3b1135ef6203 Mon Sep 17 00:00:00 2001 From: MinJeong Kim Date: Tue, 22 Nov 2016 15:51:20 +0900 Subject: [PATCH 02/16] keyboard: fix processing wrong angle Change-Id: I51ba13eb67602dcfcfdcf6913a5f1c5189aa3e72 Signed-off-by: MinJeong Kim --- src/e_mod_effect.c | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/e_mod_effect.c b/src/e_mod_effect.c index 3aece03..7356b7d 100644 --- a/src/e_mod_effect.c +++ b/src/e_mod_effect.c @@ -128,6 +128,18 @@ _eff_group_get(E_Client *ec) return group; } +static int +_eff_group_angle_get(E_Client *ec, E_Effect_Group group) +{ + if (group == E_EFFECT_GROUP_KEYBOARD) + { + if (ec->parent) + return ec->parent->e.state.rot.ang.curr; + } + + return ec->e.state.rot.ang.curr; +} + static Eina_Bool _eff_ref(E_Client *ec) { @@ -436,7 +448,7 @@ _eff_cb_visible(void *data, Evas_Object *obj, const char *signal) ec->extra_animating = EINA_TRUE; _eff_object_setup(ec, group); - ang = ec->e.state.rot.ang.curr; + ang = _eff_group_angle_get(ec, group); e_comp_object_effect_params_set(ec->frame, 0, (int[]){0, ang}, 2); if (e_comp->nocomp) { @@ -491,10 +503,17 @@ _eff_cb_hidden(void *data, Evas_Object *obj, const char *signal) if (!ec) return EINA_FALSE; if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE; + /* check for effect group */ group = _eff_group_get(ec); if ((group != E_EFFECT_GROUP_NORMAL) && (group != E_EFFECT_GROUP_KEYBOARD)) return EINA_FALSE; + if (group == E_EFFECT_GROUP_KEYBOARD) + { + if (ec->visibility.obscured == E_VISIBILITY_FULLY_OBSCURED) + return EINA_FALSE; + } + if (!evas_object_visible_get(obj)) return EINA_FALSE; if (!_eff_ref(ec)) return EINA_FALSE; @@ -512,7 +531,7 @@ _eff_cb_hidden(void *data, Evas_Object *obj, const char *signal) _eff_object_layer_up(ec); _eff_object_setup(ec, group); - ang = ec->e.state.rot.ang.curr; + ang = _eff_group_angle_get(ec, group); e_comp_object_effect_params_set(ec->frame, 0, (int[]){1, ang}, 2); if (e_comp->nocomp) @@ -620,7 +639,7 @@ _eff_cb_uniconify(void *data, Evas_Object *obj, const char *signal) e_comp_override_add(); _eff_object_setup(ec, group); - ang = ec->e.state.rot.ang.curr; + ang = _eff_group_angle_get(ec, group); e_comp_object_effect_params_set(ec->frame, 0, (int[]){0, ang}, 2); if (e_comp->nocomp) @@ -694,7 +713,7 @@ _eff_cb_iconify(void *data, Evas_Object *obj, const char *signal) e_comp_override_add(); _eff_object_setup(ec, group); - ang = ec->e.state.rot.ang.curr; + ang = _eff_group_angle_get(ec, group); e_comp_object_effect_params_set(ec->frame, 0, (int[]){1, ang}, 2); if (e_comp->nocomp) @@ -826,6 +845,7 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal) ec_home = ec; ec = below; group = _eff_group_get(ec); + if (group != E_EFFECT_GROUP_NORMAL) return EINA_FALSE; if (emission) eina_stringshare_del(emission); emission = eina_stringshare_add("e,action,restack,hide"); @@ -846,7 +866,7 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal) _eff_object_layer_up(ec); _eff_object_setup(ec, group); - ang = ec->e.state.rot.ang.curr; + ang = _eff_group_angle_get(ec, group); e_comp_object_effect_params_set(ec->frame, 0, (int[]){2, ang}, 2); if (e_comp->nocomp) @@ -889,7 +909,7 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal) _eff_object_layer_up(ec); _eff_object_setup(ec, group); - ang = ec->e.state.rot.ang.curr; + ang = _eff_group_angle_get(ec, group); e_comp_object_effect_params_set(ec->frame, 0, (int[]){3, ang}, 2); if (e_comp->nocomp) @@ -911,7 +931,7 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal) e_comp_override_add(); _eff_object_setup(ec, group); - ang = ec->e.state.rot.ang.curr; + ang = _eff_group_angle_get(ec, group); e_comp_object_effect_params_set(ec->frame, 0, (int[]){4, ang}, 2); if (e_comp->nocomp) @@ -1158,7 +1178,7 @@ e_mod_effect_init(void) else { eff->file = ""; - eff->style = "no-eff"; + eff->style = "no-effect"; } eff->clients = eina_hash_pointer_new(_eff_cb_client_data_free); -- 2.7.4 From 950fea8a540c12d83c1f3b9c877582aa7e8843f8 Mon Sep 17 00:00:00 2001 From: MinJeong Kim Date: Tue, 22 Nov 2016 19:01:12 +0900 Subject: [PATCH 03/16] Packaging: update version to 0.1.9 Change-Id: I0e3d82a564282e78a7058b79eba07e7cf6ec9d4c Signed-off-by: MinJeong Kim --- packaging/e-mod-tizen-effect.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-mod-tizen-effect.spec b/packaging/e-mod-tizen-effect.spec index 1113aac..32c5381 100644 --- a/packaging/e-mod-tizen-effect.spec +++ b/packaging/e-mod-tizen-effect.spec @@ -1,5 +1,5 @@ Name: e-mod-tizen-effect -Version: 0.1.8 +Version: 0.1.9 Release: 1 Summary: The effect module for the enlightenment URL: http://www.enlightenment.org -- 2.7.4 From 262bac7edb7ddb25484c56c56a80507fa173e2f1 Mon Sep 17 00:00:00 2001 From: MinJeong Kim Date: Thu, 24 Nov 2016 13:04:35 +0900 Subject: [PATCH 04/16] rotation: exclude video client Change-Id: Idf75a2ea8e5774f824bf318a0138b27800d5d70f Signed-off-by: MinJeong Kim --- src/e_mod_effect_rotation.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/e_mod_effect_rotation.c b/src/e_mod_effect_rotation.c index 9a28e7a..a32ae7e 100644 --- a/src/e_mod_effect_rotation.c +++ b/src/e_mod_effect_rotation.c @@ -187,6 +187,7 @@ _rotation_effect_targets_get(Rotation_Effect *effect) continue; if ((!ec->animatable) || + (e_client_video_client_has(ec)) || (!_rotation_effect_available(ec, effect->zone->rot.curr)) || (ec->e.state.rot.ang.curr == effect->zone->rot.curr)) { -- 2.7.4 From 3f18918d822e42fca042a8bb0f7e91af53e5118b Mon Sep 17 00:00:00 2001 From: MinJeong Kim Date: Thu, 24 Nov 2016 13:06:51 +0900 Subject: [PATCH 05/16] keyboard: do animation faster than before Change-Id: I1098658807057b224d49b58ecab57bcf5116c33a Signed-off-by: MinJeong Kim --- data/group/keyboard.edc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/group/keyboard.edc b/data/group/keyboard.edc index 6b8fcae..2f02197 100644 --- a/data/group/keyboard.edc +++ b/data/group/keyboard.edc @@ -1,4 +1,4 @@ -#define KEYBOARD_EFFECT_FAST 0.20 +#define KEYBOARD_EFFECT_FAST 0.06 group { name: "e/comp/effects/keyboard"; script { public ang; -- 2.7.4 From 9e1361f859128c1064a84575a1f67c8b64b80c71 Mon Sep 17 00:00:00 2001 From: MinJeong Kim Date: Thu, 24 Nov 2016 13:11:14 +0900 Subject: [PATCH 06/16] Packaging: update version to 0.1.10 Change-Id: I8233c6dd9c1d14e8367e60568c517f5b4613c17c --- packaging/e-mod-tizen-effect.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-mod-tizen-effect.spec b/packaging/e-mod-tizen-effect.spec index 32c5381..df4b90c 100644 --- a/packaging/e-mod-tizen-effect.spec +++ b/packaging/e-mod-tizen-effect.spec @@ -1,5 +1,5 @@ Name: e-mod-tizen-effect -Version: 0.1.9 +Version: 0.1.10 Release: 1 Summary: The effect module for the enlightenment URL: http://www.enlightenment.org -- 2.7.4 From ad71d9e689e607a1faca7b66c809b9277bf6a914 Mon Sep 17 00:00:00 2001 From: MinJeong Kim Date: Fri, 25 Nov 2016 16:55:27 +0900 Subject: [PATCH 07/16] Do not layer up for restack_show effect Change-Id: I789ed339cfe67775cac5a658586042d3a6a72205 --- src/e_mod_effect.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/e_mod_effect.c b/src/e_mod_effect.c index 7356b7d..c92897f 100644 --- a/src/e_mod_effect.c +++ b/src/e_mod_effect.c @@ -739,11 +739,7 @@ _eff_cb_restack_show_done(void *data, Evas_Object *obj, const char *sig, const c if (ec) { _eff_event_send(ec, EINA_FALSE, E_EFFECT_TYPE_RESTACK_SHOW); - if (_eff_unref(ec)) - { - if (_eff_client_get(ec)) - _eff_object_layer_down(ec); - } + _eff_unref(ec); } _eff_stack_update(); @@ -863,8 +859,6 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal) e_comp_override_add(); - _eff_object_layer_up(ec); - _eff_object_setup(ec, group); ang = _eff_group_angle_get(ec, group); e_comp_object_effect_params_set(ec->frame, 0, (int[]){2, ang}, 2); -- 2.7.4 From 00c2461b59e5f208c86b912bd73dbb03aceec0f8 Mon Sep 17 00:00:00 2001 From: MinJeong Kim Date: Wed, 16 Nov 2016 22:21:24 +0900 Subject: [PATCH 08/16] Check delay_del_ref if it's really deleted Change-Id: Iaac3e8f51a6e779e996b912053fdcc98a0e9c03d Signed-off-by: MinJeong Kim --- src/e_mod_effect.c | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/e_mod_effect.c b/src/e_mod_effect.c index c92897f..665e62d 100644 --- a/src/e_mod_effect.c +++ b/src/e_mod_effect.c @@ -6,6 +6,7 @@ typedef struct _E_Effect_Client { E_Client *ec; unsigned int animating; + unsigned int delay_del_ref; E_Comp_Wl_Buffer_Ref buffer_ref; E_Pixmap *ep; E_Client *reverse_ec; @@ -79,6 +80,7 @@ _eff_client_new(E_Client *ec) efc = E_NEW(E_Effect_Client, 1); efc->ec = ec; efc->animating = 0; + efc->delay_del_ref = 0; efc->ep = NULL; return efc; @@ -147,21 +149,30 @@ _eff_ref(E_Client *ec) if (!_eff) return EINA_FALSE; + efc = _eff_client_get(ec); + if (!efc) return EINA_FALSE; + if (e_object_is_del(E_OBJECT(ec))) { - ERR("Client is deleted already! ec(%p)", ec); - eina_hash_del_by_key(_eff->clients, &ec); - return EINA_FALSE; + if (!e_object_delay_del_ref_get(E_OBJECT(ec))) + { + ERR("Client is deleted already! ec(%p)", ec); + eina_hash_del_by_key(_eff->clients, &ec); + return EINA_FALSE; + } } - efc = _eff_client_get(ec); - if (!efc) return EINA_FALSE; - if (!ec->pixmap) return EINA_FALSE; if ((e_comp_object_content_type_get(ec->frame) == E_COMP_OBJECT_CONTENT_TYPE_INT_IMAGE) && (!e_pixmap_usable_get(ec->pixmap))) return EINA_FALSE; + if (e_object_is_del(E_OBJECT(ec))) + { + e_object_delay_del_ref(E_OBJECT(ec)); + efc->delay_del_ref ++; + } + efc->animating++; e_object_ref(E_OBJECT(ec)); efc->ep = e_pixmap_ref(ec->pixmap); @@ -184,6 +195,12 @@ _eff_unref(E_Client *ec) efc = _eff_client_get(ec); if (!efc) return NULL; + while (efc->delay_del_ref) + { + e_object_delay_del_unref(E_OBJECT(ec)); + efc->delay_del_ref--; + } + if (e_object_is_del(E_OBJECT(ec))) do_unref = efc->animating; @@ -501,7 +518,10 @@ _eff_cb_hidden(void *data, Evas_Object *obj, const char *signal) ec = e_comp_object_client_get(obj); if (!ec) return EINA_FALSE; - if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE; + if (e_object_is_del(E_OBJECT(ec))) + { + if (!e_object_delay_del_ref_get(E_OBJECT(ec))) return; + } /* check for effect group */ group = _eff_group_get(ec); -- 2.7.4 From 6d9a643f5af2c2ebed30e287dd587b89113b517b Mon Sep 17 00:00:00 2001 From: MinJeong Kim Date: Wed, 30 Nov 2016 15:53:58 +0900 Subject: [PATCH 09/16] Packaging: update version to 0.1.11 Change-Id: I4abd74dc7a51455a0fb8fa7d927ebd1a3da0de46 --- packaging/e-mod-tizen-effect.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-mod-tizen-effect.spec b/packaging/e-mod-tizen-effect.spec index df4b90c..a0dfc11 100644 --- a/packaging/e-mod-tizen-effect.spec +++ b/packaging/e-mod-tizen-effect.spec @@ -1,5 +1,5 @@ Name: e-mod-tizen-effect -Version: 0.1.10 +Version: 0.1.11 Release: 1 Summary: The effect module for the enlightenment URL: http://www.enlightenment.org -- 2.7.4 From c3ae406e34865f402992cd8606b89d4e92f9c5e0 Mon Sep 17 00:00:00 2001 From: MinJeong Kim Date: Thu, 1 Dec 2016 15:01:02 +0900 Subject: [PATCH 10/16] Fixed running of restack,show effect while show effect is running Change-Id: Ic9d0b79f443bf6f5c144e18f04911a0fed02bbaf --- src/e_mod_effect.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/e_mod_effect.c b/src/e_mod_effect.c index 665e62d..1b81029 100644 --- a/src/e_mod_effect.c +++ b/src/e_mod_effect.c @@ -459,6 +459,7 @@ _eff_cb_visible(void *data, Evas_Object *obj, const char *signal) if (evas_object_visible_get(obj)) return EINA_FALSE; if (!_eff_ref(ec)) return EINA_FALSE; + _eff_stack_update(); e_comp_override_add(); EFFINF("SET EXTRA_ANIMATING...", ec->pixmap, ec); -- 2.7.4 From 2f569abe8644b1d5d7c535d1639911d08e4109fb Mon Sep 17 00:00:00 2001 From: MinJeong Kim Date: Thu, 1 Dec 2016 15:02:15 +0900 Subject: [PATCH 11/16] Packaging: update version to 0.1.11 Change-Id: I91ef0279ebca45d8746cda3a3041f86ee6992eb2 --- packaging/e-mod-tizen-effect.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-mod-tizen-effect.spec b/packaging/e-mod-tizen-effect.spec index a0dfc11..1fa9b8e 100644 --- a/packaging/e-mod-tizen-effect.spec +++ b/packaging/e-mod-tizen-effect.spec @@ -1,5 +1,5 @@ Name: e-mod-tizen-effect -Version: 0.1.11 +Version: 0.1.12 Release: 1 Summary: The effect module for the enlightenment URL: http://www.enlightenment.org -- 2.7.4 From 1b71b4ec081686bad33531350a1f4a4db9262ee6 Mon Sep 17 00:00:00 2001 From: Seunghun Lee Date: Fri, 2 Dec 2016 08:50:35 +0900 Subject: [PATCH 12/16] rotation: exclude client that is placed out of screen from a list of rotation effect. Change-Id: I8be77e762f4e954f40b9709e05d18fe808528315 --- src/e_mod_effect_rotation.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/e_mod_effect_rotation.c b/src/e_mod_effect_rotation.c index a32ae7e..b3bd57b 100644 --- a/src/e_mod_effect_rotation.c +++ b/src/e_mod_effect_rotation.c @@ -182,6 +182,8 @@ _rotation_effect_targets_get(Rotation_Effect *effect) if (ec) { if (e_object_is_del(E_OBJECT(ec))) continue; + if (!E_INTERSECTS(ec->x, ec->y, ec->w, ec->h, ec->zone->x, ec->zone->y, ec->zone->w, ec->zone->h)) + continue; if ((ec->visibility.obscured != E_VISIBILITY_UNOBSCURED) && (ec->iconic)) continue; -- 2.7.4 From cdc896cacba2c80a3b8e31bbd6259b6214bbf028 Mon Sep 17 00:00:00 2001 From: Seunghun Lee Date: Fri, 2 Dec 2016 15:59:27 +0900 Subject: [PATCH 13/16] function declared non-void should reutrn a value. Change-Id: I3ecdd94399982e0c9e536898d611601989e1e97a --- src/e_mod_effect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/e_mod_effect.c b/src/e_mod_effect.c index 1b81029..bcf0815 100644 --- a/src/e_mod_effect.c +++ b/src/e_mod_effect.c @@ -521,7 +521,7 @@ _eff_cb_hidden(void *data, Evas_Object *obj, const char *signal) if (!ec) return EINA_FALSE; if (e_object_is_del(E_OBJECT(ec))) { - if (!e_object_delay_del_ref_get(E_OBJECT(ec))) return; + if (!e_object_delay_del_ref_get(E_OBJECT(ec))) return EINA_FALSE; } /* check for effect group */ -- 2.7.4 From c699b811c6adef48cccbd5422d04c8a2da9ad20b Mon Sep 17 00:00:00 2001 From: Gwanglim Lee Date: Fri, 2 Dec 2016 16:14:25 +0900 Subject: [PATCH 14/16] Packaging: update version to 0.1.13 Change-Id: I14a6a5a1dbec65ae7ddbe57912e297cddc16f865 --- packaging/e-mod-tizen-effect.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-mod-tizen-effect.spec b/packaging/e-mod-tizen-effect.spec index 1fa9b8e..c91e254 100644 --- a/packaging/e-mod-tizen-effect.spec +++ b/packaging/e-mod-tizen-effect.spec @@ -1,5 +1,5 @@ Name: e-mod-tizen-effect -Version: 0.1.12 +Version: 0.1.13 Release: 1 Summary: The effect module for the enlightenment URL: http://www.enlightenment.org -- 2.7.4 From 773eea26d6098a9fb9586fb45e1006d1e991bde6 Mon Sep 17 00:00:00 2001 From: Seunghun Lee Date: Thu, 1 Dec 2016 20:34:45 +0900 Subject: [PATCH 15/16] rotation: Packing effect objects to the desk's smart object. Change-Id: I1be989aabe951a0d53f5704a154ceb20aa0a527c --- src/e_mod_effect_rotation.c | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/e_mod_effect_rotation.c b/src/e_mod_effect_rotation.c index b3bd57b..12c5056 100644 --- a/src/e_mod_effect_rotation.c +++ b/src/e_mod_effect_rotation.c @@ -145,7 +145,7 @@ no_hint: } static Eina_List * -_rotation_effect_targets_get(Rotation_Effect *effect) +_rotation_effect_targets_get(Rotation_Effect *effect, E_Desk *desk) { Evas_Object *o; Eina_Tiler *t; @@ -181,6 +181,7 @@ _rotation_effect_targets_get(Rotation_Effect *effect) ec = evas_object_data_get(o, "E_Client"); if (ec) { + if (ec->desk != desk) continue; if (e_object_is_del(E_OBJECT(ec))) continue; if (!E_INTERSECTS(ec->x, ec->y, ec->w, ec->h, ec->zone->x, ec->zone->y, ec->zone->w, ec->zone->h)) continue; @@ -402,7 +403,7 @@ fail: } static Rotation_Effect_Begin_Context * -_rotation_effect_begin_create(Rotation_Effect *effect, Eina_List *targets) +_rotation_effect_begin_create(Rotation_Effect *effect, Eina_List *targets, E_Desk *desk) { Rotation_Effect_Begin_Context *ctx_begin = NULL; Rotation_Effect_Object *eobj = NULL; @@ -446,6 +447,8 @@ _rotation_effect_begin_create(Rotation_Effect *effect, Eina_List *targets) return NULL; } + e_desk_smart_member_add(desk, ctx_begin->layout); + EFFINF("Rotation Begin Created", NULL, NULL); int diff = effect->zone->rot.prev - effect->zone->rot.curr; @@ -459,7 +462,7 @@ _rotation_effect_begin_create(Rotation_Effect *effect, Eina_List *targets) static Rotation_Effect_End_Context * -_rotation_effect_end_create(Rotation_Effect *effect, Eina_List *targets) +_rotation_effect_end_create(Rotation_Effect *effect, Eina_List *targets, E_Desk *desk) { Rotation_Effect_End_Context *ctx_end = NULL; Rotation_Effect_Object *eobj = NULL; @@ -501,6 +504,8 @@ _rotation_effect_end_create(Rotation_Effect *effect, Eina_List *targets) return NULL; } + e_desk_smart_member_add(desk, ctx_end->layout); + EFFINF("Rotation End Created", NULL, NULL); int diff = _rotation_zone->curr_angle - _rotation_zone->prev_angle; @@ -688,16 +693,16 @@ _rotation_effect_start(Rotation_Effect *effect) } static void -_rotation_effect_animator_begin_prepare(Rotation_Effect *effect) +_rotation_effect_animator_begin_prepare(Rotation_Effect *effect, E_Desk *desk) { if (!effect) return; _rotation_effect_clear(effect); - effect->targets = _rotation_effect_targets_get(effect); + effect->targets = _rotation_effect_targets_get(effect, desk); if (!effect->targets) return; - effect->ctx_begin = _rotation_effect_begin_create(effect, effect->targets); + effect->ctx_begin = _rotation_effect_begin_create(effect, effect->targets, desk); if (!effect->ctx_begin) { _rotation_effect_clear(effect); @@ -711,7 +716,7 @@ _rotation_effect_animator_begin_prepare(Rotation_Effect *effect) } static void -_rotation_effect_animator_end_prepare(Rotation_Effect *effect) +_rotation_effect_animator_end_prepare(Rotation_Effect *effect, E_Desk *desk) { if (!effect) return; if (!effect->targets) return; @@ -722,7 +727,7 @@ _rotation_effect_animator_end_prepare(Rotation_Effect *effect) _rotation_effect_animator_end_context_free(effect->ctx_end); effect->ctx_end = NULL; - effect->ctx_end = _rotation_effect_end_create(effect, effect->targets); + effect->ctx_end = _rotation_effect_end_create(effect, effect->targets, desk); if (!effect->ctx_end) return; EFFINF("Rotation End Prepared", NULL, NULL); @@ -736,6 +741,7 @@ _rotation_effect_cb_zone_rotation_begin(void *data, int type, void *event) Rotation_Effect *effect; E_Event_Zone_Rotation_Change_Begin *ev = event; E_Zone *zone; + E_Desk *desk; effect = (Rotation_Effect *)data; if (!effect) return ECORE_CALLBACK_PASS_ON; @@ -752,7 +758,8 @@ _rotation_effect_cb_zone_rotation_begin(void *data, int type, void *event) _rotation_zone->curr_angle = zone->rot.curr; _rotation_zone->prev_angle = zone->rot.prev; - _rotation_effect_animator_begin_prepare(effect); + desk = e_desk_current_get(zone); + _rotation_effect_animator_begin_prepare(effect, desk); if (effect->targets) _rotation_effect_ready_send(zone); @@ -766,6 +773,7 @@ _rotation_effect_cb_zone_rotation_end(void *data, int type, void *event) Rotation_Effect *effect; E_Event_Zone_Rotation_Change_End *ev = event; E_Zone *zone; + E_Desk *desk; effect = (Rotation_Effect *)data; if (!effect) return ECORE_CALLBACK_PASS_ON; @@ -785,7 +793,8 @@ _rotation_effect_cb_zone_rotation_end(void *data, int type, void *event) if (!effect->ctx_end) { - _rotation_effect_animator_end_prepare(effect); + desk = e_desk_current_get(zone); + _rotation_effect_animator_end_prepare(effect, desk); if (!effect->ctx_end) _rotation_effect_clear(effect); @@ -822,6 +831,7 @@ _rotation_effect_cb_buffer_change(void *data, int ev_type, void *event) { E_Event_Client *ev = event; E_Client *ec; + E_Desk *desk; Rotation_Effect *effect; ec = ev->ec; @@ -837,7 +847,11 @@ _rotation_effect_cb_buffer_change(void *data, int ev_type, void *event) if (!effect->wait_for_buffer) return ECORE_CALLBACK_PASS_ON; - if (!effect->ctx_end) _rotation_effect_animator_end_prepare(effect); + if (!effect->ctx_end) + { + desk = e_desk_current_get(ec->zone); + _rotation_effect_animator_end_prepare(effect, desk); + } if (effect->ctx_end) _rotation_effect_start(effect); return ECORE_CALLBACK_PASS_ON; -- 2.7.4 From 8aae26fff985541912dc0161e6a25e2a24665c43 Mon Sep 17 00:00:00 2001 From: MinJeong Kim Date: Thu, 8 Dec 2016 10:24:43 +0900 Subject: [PATCH 16/16] check stack visibility for hiden effect Change-Id: Ia73a9577c41fafed71b53ce567720b6fbde73741 Signed-off-by: MinJeong Kim --- src/e_mod_effect.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/e_mod_effect.c b/src/e_mod_effect.c index bcf0815..18c3851 100644 --- a/src/e_mod_effect.c +++ b/src/e_mod_effect.c @@ -514,6 +514,7 @@ _eff_cb_hidden(void *data, Evas_Object *obj, const char *signal) Evas_Object *below; int map_ly; int ang = -1; + Eina_Bool v1, v2; if (!_eff) return EINA_FALSE; @@ -535,7 +536,14 @@ _eff_cb_hidden(void *data, Evas_Object *obj, const char *signal) return EINA_FALSE; } + /* check for object visibility */ if (!evas_object_visible_get(obj)) return EINA_FALSE; + + /* check for stack visibility */ + v1 = _eff_visibility_stack_check(ec, _eff->stack.old); + v2 = _eff_visibility_stack_check(ec, _eff->stack.cur); + if ((!v1) && (!v2)) return EINA_FALSE; + if (!_eff_ref(ec)) return EINA_FALSE; e_comp_override_add(); -- 2.7.4