e_policy_visibility: added support for pre_unobscured visibility event 69/125069/1 accepted/tizen/unified/20170414.042003 submit/tizen/20170413.140726
authorGwanglim Lee <gl77.lee@samsung.com>
Thu, 13 Apr 2017 13:10:31 +0000 (22:10 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Thu, 13 Apr 2017 13:30:41 +0000 (22:30 +0900)
The compositor sends this event before the window is shown on the screen.
And it only for client which has tizen_visibility version 5 or above.

Change-Id: I7e6d3dc98c4c1dcb28b30cee00ab910b9411a680

src/bin/e_client.h
src/bin/e_policy_visibility.c
src/bin/e_policy_wl.c

index c53c446..9911c91 100644 (file)
@@ -165,7 +165,8 @@ typedef enum _E_Visibility
    E_VISIBILITY_UNKNOWN = -1,
    E_VISIBILITY_UNOBSCURED = 0,
    E_VISIBILITY_PARTIALLY_OBSCURED = 1,
-   E_VISIBILITY_FULLY_OBSCURED = 2
+   E_VISIBILITY_FULLY_OBSCURED = 2,
+   E_VISIBILITY_PRE_UNOBSCURED = 3,
 } E_Visibility;
 
 typedef enum _E_Changable_Layer_Type
index 23f3def..7a9d20d 100644 (file)
@@ -1002,6 +1002,8 @@ _e_vis_client_uniconify_render(E_Vis_Client *vc, E_Vis_Job_Type type, Eina_Bool
 
    VS_DBG(ec, "BEGIN Uniconify render: raise %d", raise);
 
+   e_policy_wl_visibility_send(ec, E_VISIBILITY_PRE_UNOBSCURED);
+
    _e_vis_client_prepare_foreground_signal_emit(vc);
    vc->state = E_VIS_ICONIFY_STATE_RUNNING_UNICONIFY;
    VS_DBG(vc->ec, "\tUPDATE ICONIC STATE: %s", STATE_STR(vc));
index 7bbdb82..b427b36 100644 (file)
@@ -1081,6 +1081,10 @@ e_policy_wl_visibility_send(E_Client *ec, int vis)
    E_Client *ec2;
    Ecore_Window win;
    Eina_Bool sent = EINA_FALSE;
+   int ver = 1;
+   int sent_vis = E_VISIBILITY_UNKNOWN;
+
+   EINA_SAFETY_ON_TRUE_RETURN(vis == E_VISIBILITY_UNKNOWN);
 
    win = e_client_util_win_get(ec);
 
@@ -1102,13 +1106,31 @@ e_policy_wl_visibility_send(E_Client *ec, int vis)
                       e_policy_aux_message_send(ec, "dpms_wm", "off", NULL);
                  }
 
-               tizen_visibility_send_notify(res_tzvis, vis);
+               ver = wl_resource_get_version(res_tzvis);
+               sent_vis = vis;
+
+               if (vis == E_VISIBILITY_PRE_UNOBSCURED)
+                 {
+                    if (ver >= 5)
+                      tizen_visibility_send_changed(res_tzvis, vis, 0);
+                    else
+                      sent_vis = -2;
+                 }
+               else
+                 {
+                    if ((vis >= E_VISIBILITY_UNOBSCURED) && (vis <= E_VISIBILITY_FULLY_OBSCURED))
+                      tizen_visibility_send_notify(res_tzvis, vis);
+                    else
+                      sent_vis = -3;
+                 }
+
                ELOGF("TZVIS",
-                     "SEND     |win:0x%08x|res_tzvis:0x%08x|v:%d",
+                     "SEND     |win:0x%08x|res_tzvis:0x%08x|ver:%d|sent_vis:%d",
                      ec->pixmap, ec,
                      (unsigned int)win,
                      (unsigned int)res_tzvis,
-                     vis);
+                     ver,
+                     sent_vis);
                sent = EINA_TRUE;
                if (ec->comp_data->mapped)
                  {
@@ -6703,7 +6725,7 @@ e_policy_wl_init(void)
    /* create globals */
    global = wl_global_create(e_comp_wl->wl.disp,
                              &tizen_policy_interface,
-                             4,
+                             5,
                              NULL,
                              _tzpol_cb_bind);
    EINA_SAFETY_ON_NULL_GOTO(global, err);