e_client/e_comp: add new layer for CURSOR 42/135242/1 accepted/tizen/3.0/common/20170630.143936 accepted/tizen/3.0/ivi/20170630.081458 accepted/tizen/3.0/mobile/20170630.081421 accepted/tizen/3.0/tv/20170630.081236 accepted/tizen/3.0/wearable/20170630.081435 submit/tizen_3.0/20170622.052758
authorDoyoun Kang <doyoun.kang@samsung.com>
Wed, 21 Jun 2017 09:56:35 +0000 (18:56 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Wed, 21 Jun 2017 09:58:30 +0000 (18:58 +0900)
Change-Id: I659db8f88bcc3220553486825abe59e3d7ef2721

src/bin/e_client.c
src/bin/e_comp.c
src/bin/e_comp.h
src/bin/e_comp_canvas.c
src/bin/e_comp_object.c
src/bin/e_comp_wl_input.c
src/bin/e_info_server.c
src/bin/e_policy_wl.c

index 55b9e1d7fdc779d2132851736c0dd74460608471..ac61e32db71f3e261129d2f4aa91328e8dc72df5 100644 (file)
@@ -4459,11 +4459,11 @@ e_client_above_get(const E_Client *ec)
                return ec2;
           }
      }
-   if (ec->layer == E_LAYER_CLIENT_ALERT) return NULL;
+   if (ec->layer == E_LAYER_CLIENT_CURSOR) return NULL;
    if (e_comp_canvas_client_layer_map(ec->layer) == 9999) return NULL;
 
    /* go up the layers until we find one */
-   for (x = e_comp_canvas_layer_map(ec->layer) + 1; x <= e_comp_canvas_layer_map(E_LAYER_CLIENT_ALERT); x++)
+   for (x = e_comp_canvas_layer_map(ec->layer) + 1; x <= e_comp_canvas_layer_map(E_LAYER_CLIENT_CURSOR); x++)
      {
         if (!e_comp->layers[x].clients) continue;
         EINA_INLIST_FOREACH(e_comp->layers[x].clients, ec2)
@@ -4536,8 +4536,7 @@ E_API E_Client *
 e_client_bottom_get(void)
 {
    unsigned int x;
-
-   for (x = e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); x <= e_comp_canvas_layer_map(E_LAYER_CLIENT_ALERT); x++)
+   for (x = e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); x <= e_comp_canvas_layer_map(E_LAYER_CLIENT_CURSOR); x++)
      {
         E_Client *ec2;
 
@@ -4553,8 +4552,7 @@ E_API E_Client *
 e_client_top_get(void)
 {
    unsigned int x;
-
-   for (x = e_comp_canvas_layer_map(E_LAYER_CLIENT_ALERT); x >= e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); x--)
+   for (x = e_comp_canvas_layer_map(E_LAYER_CLIENT_CURSOR); x >= e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); x--)
      {
         E_Client *ec2;
 
index a2371da880e541f29037b9a3b11c315b858fa8b2..6f5d7d8879f3a2bf81dec861717d8fc3e7b4727d 100644 (file)
@@ -1833,6 +1833,8 @@ e_comp_layer_name_get(unsigned int layer, char *buff, int buff_size)
       case E_LAYER_CLIENT_NOTIFICATION_TOP: strncpy(buff, "E_LAYER_CLIENT_NOTIFICATION_TOP", buff_size); break;
       case E_LAYER_CLIENT_ALERT_LOW: strncpy(buff, "E_LAYER_CLIENT_ALERT_LOW", buff_size); break;
       case E_LAYER_CLIENT_ALERT: strncpy(buff, "E_LAYER_CLIENT_ALERT", buff_size); break;
+      case E_LAYER_CLIENT_ALERT_HIGH: strncpy(buff, "E_LAYER_CLIENT_ALERT_HIGH", buff_size); break;
+      case E_LAYER_CLIENT_CURSOR: strncpy(buff, "E_LAYER_CLIENT_CURSOR", buff_size); break;
       case E_LAYER_POPUP: strncpy(buff, "E_LAYER_POPUP", buff_size); break;
       case E_LAYER_EFFECT: strncpy(buff, "E_LAYER_EFFECT", buff_size); break;
       case E_LAYER_MENU: strncpy(buff, "E_LAYER_MENU", buff_size); break;
index da43b157d0cb3322bc4741f01f150a9f8f09c496..c999e40560e92c3f3f0d5735df816fb1c7cbf9cb 100644 (file)
@@ -6,8 +6,8 @@ typedef struct _E_Comp_Connected_Client_Info E_Comp_Connected_Client_Info;
 
 # define E_COMP_TYPE (int) 0xE0b01003
 
-# define E_LAYER_COUNT 26
-# define E_CLIENT_LAYER_COUNT 17
+# define E_LAYER_COUNT 28
+# define E_CLIENT_LAYER_COUNT 19
 
 typedef enum _E_Layer
 {
@@ -32,6 +32,8 @@ typedef enum _E_Layer
    E_LAYER_CLIENT_NOTIFICATION_TOP = 800,
    E_LAYER_CLIENT_ALERT_LOW = 850,
    E_LAYER_CLIENT_ALERT = 900,
+   E_LAYER_CLIENT_ALERT_HIGH = 950,
+   E_LAYER_CLIENT_CURSOR = 990,
    E_LAYER_POPUP = 999, // popups
    E_LAYER_EFFECT = 1999,
    E_LAYER_MENU = 5000, // menus
index c0049ae5eb29160e99ea8b7efa96c11d345239a0..3a31fb8f2335a5677974e566ad4f4a03f440c84f 100644 (file)
@@ -526,7 +526,7 @@ e_comp_canvas_fake_layers_init(void)
    unsigned int layer;
 
    /* init layers */
-   for (layer = e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); layer <= e_comp_canvas_layer_map(E_LAYER_CLIENT_ALERT); layer++)
+   for (layer = e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); layer <= e_comp_canvas_layer_map(E_LAYER_CLIENT_CURSOR); layer++)
      {
         Evas_Object *o2;
 
@@ -572,11 +572,13 @@ e_comp_canvas_layer_map_to(unsigned int layer)
       case 18: return E_LAYER_CLIENT_NOTIFICATION_TOP;
       case 19: return E_LAYER_CLIENT_ALERT_LOW;
       case 20: return E_LAYER_CLIENT_ALERT;
-      case 21: return E_LAYER_POPUP;
-      case 22: return E_LAYER_EFFECT;
-      case 23: return E_LAYER_MENU;
-      case 24: return E_LAYER_DESKLOCK;
-      case 25: return E_LAYER_MAX;
+      case 21: return E_LAYER_CLIENT_ALERT_HIGH;
+      case 22: return E_LAYER_CLIENT_CURSOR;
+      case 23: return E_LAYER_POPUP;
+      case 24: return E_LAYER_EFFECT;
+      case 25: return E_LAYER_MENU;
+      case 26: return E_LAYER_DESKLOCK;
+      case 27: return E_LAYER_MAX;
       default: break;
      }
    return -INT_MAX;
@@ -608,11 +610,13 @@ e_comp_canvas_layer_map(E_Layer layer)
       case E_LAYER_CLIENT_NOTIFICATION_TOP: return 18;
       case E_LAYER_CLIENT_ALERT_LOW: return 19;
       case E_LAYER_CLIENT_ALERT: return 20;
-      case E_LAYER_POPUP: return 21;
-      case E_LAYER_EFFECT: return 22;
-      case E_LAYER_MENU: return 23;
-      case E_LAYER_DESKLOCK: return 24;
-      case E_LAYER_MAX: return 25;
+      case E_LAYER_CLIENT_ALERT_HIGH: return 21;
+      case E_LAYER_CLIENT_CURSOR: return 22;
+      case E_LAYER_POPUP: return 23;
+      case E_LAYER_EFFECT: return 24;
+      case E_LAYER_MENU: return 25;
+      case E_LAYER_DESKLOCK: return 26;
+      case E_LAYER_MAX: return 27;
       default: break;
      }
 
@@ -643,6 +647,8 @@ e_comp_canvas_client_layer_map(E_Layer layer)
       case E_LAYER_CLIENT_NOTIFICATION_TOP: return 14;
       case E_LAYER_CLIENT_ALERT_LOW: return 15;
       case E_LAYER_CLIENT_ALERT: return 16;
+      case E_LAYER_CLIENT_ALERT_HIGH: return 17;
+      case E_LAYER_CLIENT_CURSOR: return 18;
       default: break;
      }
    return 9999;
@@ -670,7 +676,9 @@ e_comp_canvas_client_layer_map_nearest(int layer)
    LAYER_MAP(E_LAYER_CLIENT_NOTIFICATION_HIGH);
    LAYER_MAP(E_LAYER_CLIENT_NOTIFICATION_TOP);
    LAYER_MAP(E_LAYER_CLIENT_ALERT_LOW);
-   return E_LAYER_CLIENT_ALERT;
+   LAYER_MAP(E_LAYER_CLIENT_ALERT);
+   LAYER_MAP(E_LAYER_CLIENT_ALERT_HIGH);
+   return E_LAYER_CLIENT_CURSOR;
 }
 
 E_API void
index 1be4bc68e17320355a300a6f9b5ea45fde70a9a8..8c37564224a7d1518d51875442f60daf1a70e57f 100644 (file)
@@ -1690,7 +1690,7 @@ _e_comp_intercept_stack_helper(E_Comp_Object *cw, Evas_Object *stack, E_Comp_Obj
              /* reached the top client layer somehow
               * use top client object
               */
-             o = e_comp->layers[e_comp_canvas_layer_map(E_LAYER_CLIENT_ALERT)].obj;
+             o = e_comp->layers[e_comp_canvas_layer_map(E_LAYER_CLIENT_CURSOR)].obj;
           }
         if (!o)
           /* top client layer window hasn't been stacked yet. this probably shouldn't happen?
index 03a1b11f5cc1ec5336781fb704b5a5f928f16214..8a250da710630993722b1a0bb48ccea1a2573c87 100644 (file)
@@ -117,7 +117,8 @@ _e_comp_wl_input_pointer_cb_cursor_set(struct wl_client *client, struct wl_resou
         ec->comp_data->shell.configure = _e_comp_wl_input_pointer_configure;
         ec->comp_data->shell.map = _e_comp_wl_input_pointer_map;
 
-        evas_object_layer_set(ec->frame, E_LAYER_MAX - 1);
+        evas_object_layer_set(ec->frame, E_LAYER_CLIENT_CURSOR);
+        ec->layer = E_LAYER_CLIENT_CURSOR;
         ec->is_cursor = EINA_TRUE;
      }
 
index 82d14026e57310fafe12ddba68009b7b0f5413e1..0fd477848957a6ca736f1832aecfdcec2ce0d460 100644 (file)
@@ -1527,6 +1527,8 @@ _e_comp_layer_idx_get(const char *layer_name)
    if (!_check_layer_idx(layer_name, E_LAYER_CLIENT_NOTIFICATION_TOP))    return E_LAYER_CLIENT_NOTIFICATION_TOP;
    if (!_check_layer_idx(layer_name, E_LAYER_CLIENT_ALERT_LOW))           return E_LAYER_CLIENT_ALERT_LOW;
    if (!_check_layer_idx(layer_name, E_LAYER_CLIENT_ALERT))               return E_LAYER_CLIENT_ALERT;
+   if (!_check_layer_idx(layer_name, E_LAYER_CLIENT_ALERT_HIGH))          return E_LAYER_CLIENT_ALERT_HIGH;
+   if (!_check_layer_idx(layer_name, E_LAYER_CLIENT_CURSOR))              return E_LAYER_CLIENT_CURSOR;
    if (!_check_layer_idx(layer_name, E_LAYER_POPUP))                      return E_LAYER_POPUP;
    if (!_check_layer_idx(layer_name, E_LAYER_EFFECT))                     return E_LAYER_EFFECT;
    if (!_check_layer_idx(layer_name, E_LAYER_MENU))                       return E_LAYER_MENU;
index f6ee66376ae7ad5f5376af0b0cc4a652fcde1853..199cb3567ddae3468e936281ca0d6f353ab85f2a 100644 (file)
@@ -1670,6 +1670,8 @@ _tzpol_iface_cb_role_set(struct wl_client *client EINA_UNUSED, struct wl_resourc
    else if (!e_util_strcmp("wl_pointer-cursor", role))
      {
         ELOGF("TZPOL", "Set CURSOR role", ec->pixmap, ec);
+        evas_object_layer_set(ec->frame, E_LAYER_CLIENT_CURSOR);
+        ec->layer = E_LAYER_CLIENT_CURSOR;
         ec->is_cursor = EINA_TRUE;
      }
 }