e_policy_wl: add zone varaible at E_Policy_Wl_Tzsh_Srv 80/295680/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 6 Jul 2023 11:25:06 +0000 (20:25 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 12 Jul 2023 09:06:12 +0000 (18:06 +0900)
E_Policy_Wl_Tzsh_Srv uses this zone varaible when it needs the zone.

Change-Id: I54104ba96a713066e3bf75edc5136ad2b72ca0a9

src/bin/e_policy_wl.c

index a599ba4..d1ef6b9 100644 (file)
@@ -89,6 +89,8 @@ typedef struct _E_Policy_Wl_Tzsh_Srv
    const char         *name;
    E_Pixmap *ep;
    E_Client *ec;
+   E_Zone *zone;
+   Eina_List *events;
 } E_Policy_Wl_Tzsh_Srv;
 
 typedef struct _E_Policy_Wl_Tzsh_Client
@@ -632,6 +634,29 @@ _e_policy_wl_tzsh_registered_srv_send(E_Policy_Wl_Tzsh *tzsh)
      }
 }
 
+static Eina_Bool
+_e_policy_wl_tzsh_srv_cb_client_zone_set(void *data, int type EINA_UNUSED, void *event)
+{
+   E_Policy_Wl_Tzsh_Srv *tzsh_srv;
+   E_Event_Client_Zone_Set *ev;
+
+   tzsh_srv = data;
+   ev = event;
+
+   if (tzsh_srv->ec != ev->ec)
+     goto end;
+
+   if (tzsh_srv->zone == ev->zone)
+     goto end;
+
+   ELOGF("TZSH", "Change Zone | e_policy_wl_tzsh_srv %p old(%p) new(%p)",
+         tzsh_srv->ec, tzsh_srv, tzsh_srv->zone, ev->zone);
+
+   tzsh_srv->zone = ev->zone;
+
+end:
+   return ECORE_CALLBACK_PASS_ON;
+}
 
 // --------------------------------------------------------
 // E_Policy_Wl_Tzsh_Srv
@@ -650,6 +675,7 @@ _e_policy_wl_tzsh_srv_add(E_Policy_Wl_Tzsh *tzsh, Tzsh_Srv_Role role, struct wl_
    tzsh_srv->name = eina_stringshare_add(name);
    tzsh_srv->ep = ep;
    tzsh_srv->ec = ec;
+   tzsh_srv->zone = e_comp_zone_find_by_ec(ec);
    e_object_ref(E_OBJECT(ec));
    tzsh_srv->tzsh->service_list = eina_list_append(tzsh_srv->tzsh->service_list, tzsh_srv);
 
@@ -662,12 +688,16 @@ _e_policy_wl_tzsh_srv_add(E_Policy_Wl_Tzsh *tzsh, Tzsh_Srv_Role role, struct wl_
 
    _e_policy_wl_tzsh_srv_state_broadcast(tzsh_srv, EINA_TRUE);
 
+   E_LIST_HANDLER_APPEND(tzsh_srv->events, E_EVENT_CLIENT_ZONE_SET, _e_policy_wl_tzsh_srv_cb_client_zone_set, tzsh_srv);
+
    return tzsh_srv;
 }
 
 static void
 _e_policy_wl_tzsh_srv_del(E_Policy_Wl_Tzsh_Srv *tzsh_srv)
 {
+   E_FREE_LIST(tzsh_srv->events, ecore_event_handler_del);
+
    polwl->tzsh_srvs = eina_list_remove(polwl->tzsh_srvs, tzsh_srv);
 
 #ifdef TZSH_DEBUG
@@ -3983,17 +4013,17 @@ _tzsh_srv_softkey_cb_msg_send(struct wl_client *client EINA_UNUSED, struct wl_re
 {
    E_Policy_Wl_Tzsh_Srv *tzsh_srv;
    E_Service_Softkey *softkey_service;
-   E_Client *softkey_ec;
+   E_Zone *zone;
 
    tzsh_srv = wl_resource_get_user_data(resource);
 
    EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
    EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
 
-   softkey_ec = tzsh_srv->ec;
-   EINA_SAFETY_ON_NULL_RETURN(softkey_ec);
+   zone = tzsh_srv->zone;
+   EINA_SAFETY_ON_NULL_RETURN(zone);
 
-   softkey_service = e_service_softkey_get(softkey_ec->zone);
+   softkey_service = e_service_softkey_get(zone);
    EINA_SAFETY_ON_NULL_RETURN(softkey_service);
 
    switch (msg)
@@ -4040,10 +4070,10 @@ _tzsh_srv_iface_cb_softkey_get(struct wl_client *client, struct wl_resource *res
 
    if (tzsh_srv->tzsh)
      {
-        E_Client *softkey_ec = tzsh_srv->ec;
-        if (softkey_ec)
-          softkey_service = e_service_softkey_get(softkey_ec->zone);
-        ELOGF("TZSH", "[SOFTKEY SERVICE] resource set. res:%p, softkey_service:%p, softkey_ec:%p", NULL, res, softkey_service, softkey_ec);
+        E_Zone *zone = tzsh_srv->zone;
+        if (zone)
+          softkey_service = e_service_softkey_get(zone);
+        ELOGF("TZSH", "[SOFTKEY SERVICE] resource set. res:%p, softkey_service:%p, softkey_ec:%p", NULL, res, softkey_service, tzsh_srv->ec);
         if (softkey_service)
           {
              e_service_softkey_wl_resource_set(softkey_service, res);