From b6efdf112aa8893e390e1c8e667c45f20ea44b86 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Tue, 4 Jul 2023 11:38:01 +0900 Subject: [PATCH] e_service_softkey: remove the use of ec->zone The zone variable at ec will be deleted. Change-Id: I65ebc99e6e992faf56ee2e332534850e6b0b6ac5 --- src/bin/services/e_service_softkey.c | 47 +++++++++++++++++++++++++++++++----- src/bin/services/e_service_softkey.h | 2 ++ 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/bin/services/e_service_softkey.c b/src/bin/services/e_service_softkey.c index 49f8902..d4d7024 100644 --- a/src/bin/services/e_service_softkey.c +++ b/src/bin/services/e_service_softkey.c @@ -278,12 +278,37 @@ _e_service_handler_object_new(E_Service_Softkey *softkey_service) return handler_obj; } +static Eina_Bool +_softkey_service_cb_client_zone_set(void *data, int type EINA_UNUSED, void *event) +{ + E_Service_Softkey *softkey_service; + E_Event_Client_Zone_Set *ev; + + softkey_service = data; + ev = event; + + if (softkey_service->ec != ev->ec) + goto end; + + if (softkey_service->zone == ev->zone) + goto end; + + ELOGF("SOFTKEY_SRV", "Change Zone | taskbar_service %p old(%p) new(%p)", + softkey_service->ec, softkey_service, softkey_service->zone, ev->zone); + + softkey_service->zone = ev->zone; + +end: + return ECORE_CALLBACK_PASS_ON; +} + EINTERN void e_service_softkey_client_set(E_Client *ec) { ELOGF("SOFTKEY_SRV", "%s", ec, __func__); E_Service_Softkey *softkey_service; + E_Zone *zone; if (_e_softkey_service_funcs && _e_softkey_service_funcs->softkey_service_client_set) { @@ -301,15 +326,16 @@ e_service_softkey_client_set(E_Client *ec) ELOGF("SOFTKEY_SRV", "SET Softkey service", ec); - softkey_service = e_service_softkey_get(ec->zone); + zone = e_comp_zone_find_by_ec(ec); + softkey_service = e_service_softkey_get(zone); if (!softkey_service) - softkey_service = e_service_softkey_add(ec->zone, ec); + softkey_service = e_service_softkey_add(zone, ec); else { if (softkey_service->ec != ec) { e_service_softkey_del(softkey_service); - softkey_service = e_service_softkey_add(ec->zone, ec); + softkey_service = e_service_softkey_add(zone, ec); } } @@ -340,6 +366,8 @@ e_service_softkey_client_set(E_Client *ec) evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW, _e_service_softkey_client_evas_cb_show, softkey_service); evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_HIDE, _e_service_softkey_client_evas_cb_hide, softkey_service); + + E_LIST_HANDLER_APPEND(softkey_service->events, E_EVENT_CLIENT_ZONE_SET, _softkey_service_cb_client_zone_set, softkey_service); } EINTERN void @@ -348,6 +376,7 @@ e_service_softkey_client_unset(E_Client *ec) ELOGF("SOFTKEY_SRV", "%s", ec, __func__); E_Service_Softkey *softkey_service; + E_Zone *zone; if (_e_softkey_service_funcs && _e_softkey_service_funcs->softkey_service_client_unset) { @@ -355,9 +384,11 @@ e_service_softkey_client_unset(E_Client *ec) return; } - softkey_service = e_service_softkey_get(ec->zone); + zone = e_comp_zone_find_by_ec(ec); + softkey_service = e_service_softkey_get(zone); if (!softkey_service) return; + E_FREE_LIST(softkey_service->events, ecore_event_handler_del); evas_object_event_callback_del(softkey_service->ec->frame, EVAS_CALLBACK_SHOW, _e_service_softkey_client_evas_cb_show); evas_object_event_callback_del(softkey_service->ec->frame, EVAS_CALLBACK_HIDE, _e_service_softkey_client_evas_cb_hide); @@ -566,6 +597,7 @@ EINTERN void e_service_softkey_restore_visible_request(E_Service_Softkey *softkey_service) { E_Service_Softkey_Pending_Visible_Request *vis_req; + E_Zone *zone; Eina_List *l, *ll; Eina_Bool restored = EINA_FALSE; @@ -573,7 +605,8 @@ e_service_softkey_restore_visible_request(E_Service_Softkey *softkey_service) EINA_LIST_REVERSE_FOREACH_SAFE(_e_softkey_service_pending_req.visible, l, ll, vis_req) { - if (vis_req->ec->zone == softkey_service->zone) + zone = e_comp_zone_find_by_ec(vis_req->ec); + if (zone == softkey_service->zone) { if (!restored) { @@ -691,13 +724,15 @@ e_service_softkey_handler_region_set(E_Client *ec, int angle, Eina_Tiler *tiler) E_Service_Softkey *softkey_service = NULL; E_Policy_Angle_Map ridx; + E_Zone *zone; EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE); EINA_SAFETY_ON_TRUE_RETURN_VAL(e_object_is_del(E_OBJECT(ec)), EINA_FALSE); ELOGF("SOFTKEY", "SOFTKEY_SRV.. SET Softkey region. angle:%d", ec, angle); - softkey_service = e_service_softkey_get(ec->zone); + zone = e_comp_zone_find_by_ec(ec); + softkey_service = e_service_softkey_get(zone); EINA_SAFETY_ON_NULL_RETURN_VAL(softkey_service, EINA_FALSE); if (!softkey_service->handler_obj) diff --git a/src/bin/services/e_service_softkey.h b/src/bin/services/e_service_softkey.h index 2045d36..6847d52 100644 --- a/src/bin/services/e_service_softkey.h +++ b/src/bin/services/e_service_softkey.h @@ -16,6 +16,8 @@ struct _E_Service_Softkey E_Policy_Softkey_Opacity opacity; Eina_List *intercept_hooks; Eina_Bool show_block; + + Eina_List *events; }; struct _E_Service_Softkey_Funcs -- 2.7.4