e_policy: remove the use of ec->zone 77/295677/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 6 Jul 2023 05:51:57 +0000 (14:51 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 12 Jul 2023 09:06:12 +0000 (18:06 +0900)
the zone variable at e_client will be deprecated.

Change-Id: I1759353946df5cb60695655313ec820c70f86e89

src/bin/e_policy.c

index 5f5b5d8..4862a02 100644 (file)
@@ -96,8 +96,12 @@ static void
 _e_policy_client_launcher_set(E_Policy_Client *pc)
 {
    E_Policy_Client *pc2;
+   E_Zone *zone;
+
+   zone = pc->zone;
+   EINA_SAFETY_ON_NULL_RETURN(zone);
 
-   pc2 = e_policy_client_launcher_get(pc->ec->zone);
+   pc2 = e_policy_client_launcher_get(zone);
    if (pc2) return;
 
    if (pc->ec->netwm.type != e_config->launcher.type)
@@ -211,18 +215,21 @@ static void
 _e_policy_client_maximize_pre(E_Policy_Client *pc)
 {
    E_Client *ec;
+   E_Zone *zone;
    int zx, zy, zw, zh;
 
    ec = pc->ec;
+   zone = pc->zone;
+   if (!zone) return;
 
    if (ec->desk->visible)
-     e_zone_useful_geometry_get(ec->zone, &zx, &zy, &zw, &zh);
+     e_zone_useful_geometry_get(zone, &zx, &zy, &zw, &zh);
    else
      {
-        zx = ec->zone->x;
-        zy = ec->zone->y;
-        zw = ec->zone->w;
-        zh = ec->zone->h;
+        zx = zone->x;
+        zy = zone->y;
+        zw = zone->w;
+        zh = zone->h;
      }
 
    ec->client.x = zx;
@@ -468,8 +475,6 @@ _e_policy_desk_get_by_num(unsigned int zone_num, int x, int y)
 static void
 _e_policy_cb_hook_client_new_post(void *d EINA_UNUSED, E_Client *ec)
 {
-   E_Policy_Client *pc;
-
    if (EINA_UNLIKELY(!ec))
      return;
 
@@ -484,17 +489,21 @@ _e_policy_cb_hook_client_del(void *d EINA_UNUSED, E_Client *ec)
    if (EINA_UNLIKELY(!ec))
      return;
 
-   e_tzsh_indicator_srv_ower_win_update(ec->zone);
-   e_policy_wl_win_brightness_apply(ec);
-   e_policy_wl_client_del(ec);
+   pc = eina_hash_find(hash_policy_clients, &ec);
+   if (!pc) return;
+   if (!pc->zone) return;
+   if (!pc->ec) return;
 
-   if (e_policy_client_is_lockscreen(ec))
-     e_policy_stack_clients_restack_above_lockscreen(ec, EINA_FALSE);
+   e_tzsh_indicator_srv_ower_win_update(pc->zone);
+   e_policy_wl_win_brightness_apply(pc->ec);
+   e_policy_wl_client_del(pc->ec);
 
-   e_policy_stack_cb_client_remove(ec);
+   if (e_policy_client_is_lockscreen(pc->ec))
+     e_policy_stack_clients_restack_above_lockscreen(pc->ec, EINA_FALSE);
+
+   e_policy_stack_cb_client_remove(pc->ec);
    e_client_visibility_calculate();
 
-   pc = eina_hash_find(hash_policy_clients, &ec);
    _e_policy_client_del(pc);
 }
 
@@ -649,9 +658,17 @@ _e_policy_cb_hook_client_eval_post_fetch(void *d EINA_UNUSED, E_Client *ec)
 static void
 _e_policy_cb_hook_client_eval_post_new_client(void *d EINA_UNUSED, E_Client *ec)
 {
+   E_Policy_Client *pc;
+   E_Zone *zone;
+
    if (e_object_is_del(E_OBJECT(ec))) return;
    if ((ec->new_client) && (!e_pixmap_usable_get(ec->pixmap))) return;
 
+   pc = eina_hash_find(hash_policy_clients, &ec);
+   EINA_SAFETY_ON_NULL_RETURN(pc);
+   zone = pc->zone;
+   EINA_SAFETY_ON_NULL_RETURN(zone);
+
    if (e_policy_client_is_lockscreen(ec))
      e_policy_stack_clients_restack_above_lockscreen(ec, EINA_TRUE);
 }
@@ -692,9 +709,16 @@ _e_policy_cb_hook_client_fullscreen_pre(void* data EINA_UNUSED, E_Client *ec)
 static void
 _e_policy_cb_hook_client_visibility(void *d EINA_UNUSED, E_Client *ec)
 {
+   E_Policy_Client *pc;
+   E_Zone *zone;
    int ex, ey, ew, eh;
    int ax, ay, aw, ah;
 
+   pc = eina_hash_find(hash_policy_clients, &ec);
+   EINA_SAFETY_ON_NULL_RETURN(pc);
+   zone = pc->zone;
+   EINA_SAFETY_ON_NULL_RETURN(zone);
+
    if (ec->visibility.changed)
      {
         if (ec->visibility.obscured == E_VISIBILITY_UNOBSCURED)
@@ -725,8 +749,8 @@ _e_policy_cb_hook_client_visibility(void *d EINA_UNUSED, E_Client *ec)
         e_policy_wl_win_brightness_apply(ec);
 
         _e_pol_changed_vis = EINA_TRUE;
-        if (!eina_list_data_find(_e_pol_changed_zone, ec->zone))
-          _e_pol_changed_zone = eina_list_append(_e_pol_changed_zone, ec->zone);
+        if (!eina_list_data_find(_e_pol_changed_zone, zone))
+          _e_pol_changed_zone = eina_list_append(_e_pol_changed_zone, zone);
      }
    else
      {
@@ -741,9 +765,9 @@ _e_policy_cb_hook_client_visibility(void *d EINA_UNUSED, E_Client *ec)
                {
                   e_client_geometry_get(ec, &ex, &ey, &ew, &eh);
                   // crop ec size with zone size
-                  E_RECTS_CLIP_TO_RECT(ex, ey, ew, eh, ec->zone->x, ec->zone->y, ec->zone->w, ec->zone->h);
+                  E_RECTS_CLIP_TO_RECT(ex, ey, ew, eh, zone->x, zone->y, zone->w, zone->h);
 
-                  if (!E_INTERSECTS(ec->zone->x, ec->zone->y, ec->zone->w, ec->zone->h, ex, ey, ew, eh))
+                  if (!E_INTERSECTS(zone->x, zone->y, zone->w, zone->h, ex, ey, ew, eh))
                     {
                        if (ec->visibility.last_sent_type == E_VISIBILITY_PRE_UNOBSCURED)
                          {
@@ -939,9 +963,10 @@ _e_policy_client_maximize_update(E_Zone *zone)
 
    E_CLIENT_FOREACH(ec)
      {
-        if (ec->zone != zone) continue;
-
         pc = eina_hash_find(hash_policy_clients, &ec);
+        if (!pc) continue;
+        if (pc->zone != zone) continue;
+
         if (pc && pc->max_policy_state)
           {
              _e_policy_client_maximize_policy_cancel(pc);
@@ -957,6 +982,7 @@ _e_policy_cb_zone_move_resize(void *data EINA_UNUSED, int type EINA_UNUSED, void
    E_Policy_Softkey *softkey;
 
    ev = event;
+   if (!ev) return ECORE_CALLBACK_PASS_ON;
 
    if (e_config->use_softkey)
      {
@@ -1049,6 +1075,7 @@ static Eina_Bool
 _e_policy_cb_zone_useful_geometry_change(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
 {
    E_Event_Zone_Useful_Geometry_Change *ev;
+   E_Policy_Client *pc;
    E_Client *ec;
 
    ev = event;
@@ -1056,8 +1083,9 @@ _e_policy_cb_zone_useful_geometry_change(void *data EINA_UNUSED, int type EINA_U
 
    E_CLIENT_FOREACH(ec)
      {
-        if (ev->zone != ec->zone)
-          continue;
+        pc = eina_hash_find(hash_policy_clients, &ec);
+        if (!pc) continue;
+        if (ev->zone != pc->zone) continue;
 
         if (ec->maximized)
           e_client_maximize_update(ec);
@@ -1106,6 +1134,8 @@ _e_policy_cb_client_move(void *data EINA_UNUSED, int type EINA_UNUSED, void *eve
 {
    E_Event_Client *ev;
    E_Client *ec;
+   E_Policy_Client *pc;
+   E_Zone *zone;
    int zx, zy, zw, zh;
    int ex, ey, ew, eh;
 
@@ -1115,15 +1145,21 @@ _e_policy_cb_client_move(void *data EINA_UNUSED, int type EINA_UNUSED, void *eve
    ec = ev->ec;
    if (!ec) goto end;
 
+   pc = eina_hash_find(hash_policy_clients, &ec);
+   if (!pc) goto end;
+
+   zone = pc->zone;
+   if (!zone) goto end;
+
    e_policy_wl_position_send(ec);
    e_client_visibility_calculate();
 
    if (e_policy_client_is_lockscreen(ec))
      {
-        zx = ec->zone->x;
-        zy = ec->zone->y;
-        zw = ec->zone->w;
-        zh = ec->zone->h;
+        zx = zone->x;
+        zy = zone->y;
+        zw = zone->w;
+        zh = zone->h;
 
         e_client_geometry_get(ec, &ex, &ey, &ew, &eh);
 
@@ -1142,6 +1178,7 @@ _e_policy_cb_client_resize(void *data EINA_UNUSED, int type EINA_UNUSED, void *e
 {
    E_Event_Client *ev;
    E_Client *ec;
+   E_Policy_Client *pc;
    int zh = 0;
 
    ev = (E_Event_Client *)event;
@@ -1150,10 +1187,13 @@ _e_policy_cb_client_resize(void *data EINA_UNUSED, int type EINA_UNUSED, void *e
    ec = ev->ec;
    EINA_SAFETY_ON_NULL_RETURN_VAL(ec, ECORE_CALLBACK_PASS_ON);
 
+   pc = eina_hash_find(hash_policy_clients, &ec);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(pc, ECORE_CALLBACK_PASS_ON);
+
    /* re-calculate window's position with changed size */
    if (e_policy_client_is_volume_tv(ec))
      {
-        e_zone_useful_geometry_get(ec->zone, NULL, NULL, NULL, &zh);
+        e_zone_useful_geometry_get(pc->zone, NULL, NULL, NULL, &zh);
         evas_object_move(ec->frame, 0, (zh / 2) - (ec->h / 2));
 
         evas_object_pass_events_set(ec->frame, 1);
@@ -1332,12 +1372,16 @@ _e_policy_cb_client_hide(void *data EINA_UNUSED, int type EINA_UNUSED, void *eve
 {
    E_Event_Client *ev;
    E_Client *ec;
+   E_Policy_Client *pc;
 
    ev = event;
    if (!ev) return ECORE_CALLBACK_PASS_ON;
 
    ec = ev->ec;
-   e_tzsh_indicator_srv_ower_win_update(ec->zone);
+   pc = eina_hash_find(hash_policy_clients, &ec);
+   if (!pc) return ECORE_CALLBACK_PASS_ON;
+
+   e_tzsh_indicator_srv_ower_win_update(pc->zone);
 
    return ECORE_CALLBACK_PASS_ON;
 }
@@ -1430,9 +1474,11 @@ e_policy_client_launcher_get(E_Zone *zone)
    E_Policy_Client *pc;
    Eina_List *l;
 
+   EINA_SAFETY_ON_NULL_RETURN_VAL(zone, NULL);
+
    EINA_LIST_FOREACH(e_policy->launchers, l, pc)
      {
-        if (pc->ec->zone == zone)
+        if (pc->zone == zone)
           return pc;
      }
    return NULL;
@@ -1514,6 +1560,7 @@ e_policy_keyboard_layout_apply(E_Client *ec EINA_UNUSED)
    int angle;
    int angle_id = 0;
    int kbd_x, kbd_y, kbd_w, kbd_h;
+   E_Policy_Client *pc;
 
    if (!e_policy_client_is_keyboard(ec) &&
        !e_policy_client_is_keyboard_sub(ec))
@@ -1533,16 +1580,20 @@ e_policy_keyboard_layout_apply(E_Client *ec EINA_UNUSED)
    kbd_w = ec->e.state.rot.geom[angle_id].w;
    kbd_h = ec->e.state.rot.geom[angle_id].h;
 
+   pc = eina_hash_find(hash_policy_clients, &ec);
+   if (!pc->ec) return;
+   if (!pc->zone) return;
+
    switch (angle)
      {
       case 0:
-         kbd_x = ec->zone->w - kbd_w;
-         kbd_y = ec->zone->h - kbd_h;
+         kbd_x = pc->zone->w - kbd_w;
+         kbd_y = pc->zone->h - kbd_h;
          break;
 
       case 90:
-         kbd_x = ec->zone->w - kbd_w;
-         kbd_y = ec->zone->h - kbd_h;
+         kbd_x = pc->zone->w - kbd_w;
+         kbd_y = pc->zone->h - kbd_h;
          break;
 
       case 180:
@@ -1556,8 +1607,8 @@ e_policy_keyboard_layout_apply(E_Client *ec EINA_UNUSED)
          break;
 
       default:
-         kbd_x = ec->zone->w - kbd_w;
-         kbd_y = ec->zone->h - kbd_h;
+         kbd_x = pc->zone->w - kbd_w;
+         kbd_y = pc->zone->h - kbd_h;
          break;
      }