e_service_softkey: remove the use of ec->zone 00/295300/1
authorSooChan Lim <sc1.lim@samsung.com>
Tue, 4 Jul 2023 02:38:01 +0000 (11:38 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 5 Jul 2023 02:01:10 +0000 (11:01 +0900)
The zone variable at ec will be deleted.

Change-Id: I65ebc99e6e992faf56ee2e332534850e6b0b6ac5

src/bin/services/e_service_softkey.c
src/bin/services/e_service_softkey.h

index 49f8902..d4d7024 100644 (file)
@@ -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)
index 2045d36..6847d52 100644 (file)
@@ -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