e_comp_wl: add win_type to E_Comp_Wl_Client_Data 59/49759/5 accepted/tizen/mobile/20151108.231207 accepted/tizen/tv/20151108.231226 accepted/tizen/wearable/20151108.231239 submit/tizen/20151108.083635
authorDuna Oh <duna.oh@samsung.com>
Tue, 20 Oct 2015 05:29:15 +0000 (14:29 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Sun, 8 Nov 2015 08:19:04 +0000 (00:19 -0800)
Change-Id: I83dd733946982963c9773205968b3b46f3111594
Signed-off-by: Duna Oh <duna.oh@samsung.com>
src/bin/e_comp.h
src/bin/e_comp_canvas.c
src/bin/e_comp_wl.c
src/bin/e_comp_wl.h
src/modules/wl_desktop_shell/e_mod_main.c

index 71bd237..e10154b 100644 (file)
@@ -20,8 +20,8 @@ typedef struct _E_Comp_Demo_Style_Item E_Comp_Demo_Style_Item;
 
 # define E_COMP_TYPE (int) 0xE0b01003
 
-# define E_LAYER_COUNT 23
-# define E_CLIENT_LAYER_COUNT 15
+# define E_LAYER_COUNT 24
+# define E_CLIENT_LAYER_COUNT 16
 
 typedef enum _E_Layer
 {
@@ -40,9 +40,10 @@ typedef enum _E_Layer
    E_LAYER_CLIENT_TOP = 500,
    E_LAYER_CLIENT_DRAG = 550,
    E_LAYER_CLIENT_PRIO = 600,
-   E_LAYER_CLIENT_NOTIFICATION_LOW = 700,
-   E_LAYER_CLIENT_NOTIFICATION_NORMAL = 750,
-   E_LAYER_CLIENT_NOTIFICATION_HIGH = 800,
+   E_LAYER_CLIENT_NOTIFICATION_LOW = 650,
+   E_LAYER_CLIENT_NOTIFICATION_NORMAL = 700,
+   E_LAYER_CLIENT_NOTIFICATION_HIGH = 750,
+   E_LAYER_CLIENT_NOTIFICATION_TOP = 800,
    E_LAYER_CLIENT_ALERT = 850,
    E_LAYER_POPUP = 999, // popups
    E_LAYER_MENU = 5000, // menus
index aab0f2e..2cdc8e6 100644 (file)
@@ -524,11 +524,12 @@ e_comp_canvas_layer_map_to(unsigned int layer)
       case 15: return E_LAYER_CLIENT_NOTIFICATION_LOW;
       case 16: return E_LAYER_CLIENT_NOTIFICATION_NORMAL;
       case 17: return E_LAYER_CLIENT_NOTIFICATION_HIGH;
-      case 18: return E_LAYER_CLIENT_ALERT;
-      case 19: return E_LAYER_POPUP;
-      case 20: return E_LAYER_MENU;
-      case 21: return E_LAYER_DESKLOCK;
-      case 22: return E_LAYER_MAX;
+      case 18: return E_LAYER_CLIENT_NOTIFICATION_TOP;
+      case 19: return E_LAYER_CLIENT_ALERT;
+      case 20: return E_LAYER_POPUP;
+      case 21: return E_LAYER_MENU;
+      case 22: return E_LAYER_DESKLOCK;
+      case 23: return E_LAYER_MAX;
       default: break;
      }
    return -INT_MAX;
@@ -557,11 +558,12 @@ e_comp_canvas_layer_map(E_Layer layer)
       case E_LAYER_CLIENT_NOTIFICATION_LOW: return 15;
       case E_LAYER_CLIENT_NOTIFICATION_NORMAL: return 16;
       case E_LAYER_CLIENT_NOTIFICATION_HIGH: return 17;
-      case E_LAYER_CLIENT_ALERT: return 18;
-      case E_LAYER_POPUP: return 19;
-      case E_LAYER_MENU: return 20;
-      case E_LAYER_DESKLOCK: return 21;
-      case E_LAYER_MAX: return 22;
+      case E_LAYER_CLIENT_NOTIFICATION_TOP: return 18;
+      case E_LAYER_CLIENT_ALERT: return 19;
+      case E_LAYER_POPUP: return 20;
+      case E_LAYER_MENU: return 21;
+      case E_LAYER_DESKLOCK: return 22;
+      case E_LAYER_MAX: return 23;
       default: break;
      }
    return 9999;
@@ -586,7 +588,8 @@ e_comp_canvas_client_layer_map(E_Layer layer)
       case E_LAYER_CLIENT_NOTIFICATION_LOW: return 11;
       case E_LAYER_CLIENT_NOTIFICATION_NORMAL: return 12;
       case E_LAYER_CLIENT_NOTIFICATION_HIGH: return 13;
-      case E_LAYER_CLIENT_ALERT: return 14;
+      case E_LAYER_CLIENT_NOTIFICATION_TOP: return 14;
+      case E_LAYER_CLIENT_ALERT: return 15;
       default: break;
      }
    return 9999;
@@ -612,6 +615,7 @@ e_comp_canvas_client_layer_map_nearest(int layer)
    LAYER_MAP(E_LAYER_CLIENT_NOTIFICATION_LOW);
    LAYER_MAP(E_LAYER_CLIENT_NOTIFICATION_NORMAL);
    LAYER_MAP(E_LAYER_CLIENT_NOTIFICATION_HIGH);
+   LAYER_MAP(E_LAYER_CLIENT_NOTIFICATION_TOP);
    return E_LAYER_CLIENT_ALERT;
 }
 
index 08738c5..e6bce10 100644 (file)
@@ -3050,6 +3050,10 @@ _e_comp_wl_client_cb_new(void *data EINA_UNUSED, E_Client *ec)
    ec->comp_data->accepts_focus = p_cdata->accepts_focus;
    ec->comp_data->conformant = p_cdata->conformant;
    ec->comp_data->aux_hint.hints = p_cdata->aux_hint.hints;
+   ec->comp_data->win_type = p_cdata->win_type;
+   ec->comp_data->layer = p_cdata->layer;
+   ec->comp_data->fetch.win_type = p_cdata->fetch.win_type;
+   ec->comp_data->fetch.layer = p_cdata->fetch.layer;
 
    /* add this client to the hash */
    /* eina_hash_add(clients_win_hash, &win, ec); */
index f1a471e..e98ee55 100644 (file)
@@ -373,6 +373,14 @@ struct _E_Comp_Wl_Client_Data
    Eina_Bool opaque_state : 1;
    unsigned char accepts_focus : 1;
    unsigned char conformant : 1;
+   E_Window_Type win_type;
+   E_Layer layer;
+
+   struct
+   {
+      unsigned char win_type : 1;
+      unsigned char layer : 1;
+   } fetch;
 };
 
 struct _E_Comp_Wl_Output
index 2ad8b89..939f67a 100644 (file)
@@ -1234,6 +1234,19 @@ _e_xdg_shell_cb_surface_get(struct wl_client *client, struct wl_resource *resour
    E_Comp_Client_Data *p_cdata = e_pixmap_cdata_get(ep);
    EINA_SAFETY_ON_NULL_RETURN(p_cdata);
    ec->icccm.accepts_focus = ec->icccm.take_focus = p_cdata->accepts_focus;
+
+   if (p_cdata->fetch.win_type)
+     {
+        ec->netwm.type = p_cdata->win_type;
+        p_cdata->fetch.win_type = 0;
+     }
+   if (p_cdata->fetch.layer)
+     {
+        ec->layer = p_cdata->layer;
+        p_cdata->fetch.layer = 0;
+        evas_object_layer_set(ec->frame, ec->layer);
+        ELOG("LAYER_SET", ec->pixmap, ec);
+     }
 }
 
 static void