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
}
}
+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
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);
_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
{
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)
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);