e_policy_wl: change code for handling force_obscured window 44/248944/3
authorDoyoun Kang <doyoun.kang@samsung.com>
Thu, 3 Dec 2020 08:55:58 +0000 (17:55 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Thu, 3 Dec 2020 11:08:07 +0000 (20:08 +0900)
E_policy run uniconify_render process when the force_obscured ec is activated or uniconified.
The client window which requests activate or uniconify can get the iconic state change event.

Change-Id: I427edc2829a2e9a1f4646eda12dc947c3e726250

src/bin/e_policy_visibility.c
src/bin/e_policy_wl.c

index 6d42ebe..fd4fe5e 100644 (file)
@@ -1598,6 +1598,7 @@ _e_vis_ec_job_exec(E_Client *ec, E_Vis_Job_Type type)
      {
       case E_VIS_JOB_TYPE_ACTIVATE:
          if (!ec) break;
+         if (ec->visibility.force_obscured) break;
          e_client_activate(ec, 1);
          if (e_policy_client_is_lockscreen(ec))
            {
@@ -1609,6 +1610,8 @@ _e_vis_ec_job_exec(E_Client *ec, E_Vis_Job_Type type)
            e_policy_stack_check_above_lockscreen(ec, ec->layer, NULL, EINA_TRUE);
          break;
       case E_VIS_JOB_TYPE_UNICONIFY:
+         if (!ec) break;
+         if (ec->visibility.force_obscured) break;
          e_client_uniconify(ec);
          break;
       case E_VIS_JOB_TYPE_UNICONIFY_BY_VISIBILITY:
index 842e4ba..70703ae 100644 (file)
@@ -1331,13 +1331,15 @@ e_policy_wl_activate(E_Client *ec)
 
    e_policy_visibility_client_lower_job_cancel(ec);
 
-   if ((!starting) && (!ec->focused) && (!ec->visibility.force_obscured))
+   if ((!starting) && (!ec->focused))
      {
         if (!e_policy_visibility_client_activate(ec))
           {
              if ((ec->iconic) && (!ec->exp_iconify.by_client))
                e_policy_wl_iconify_state_change_send(ec, 0);
-             e_client_activate(ec, EINA_TRUE);
+
+             if (!ec->visibility.force_obscured)
+               e_client_activate(ec, EINA_TRUE);
           }
      }
    else
@@ -2212,18 +2214,18 @@ e_policy_wl_uniconify(E_Client *ec)
    EINA_SAFETY_ON_NULL_RETURN(ec);
    EINA_SAFETY_ON_NULL_RETURN(ec->frame);
 
-   if (ec->visibility.force_obscured)
-     {
-        ec->exp_iconify.by_client = 0;
-        return;
-     }
-
    if (e_policy_visibility_client_uniconify(ec, 1))
      return;
 
    if ((ec->iconic) && (!ec->exp_iconify.by_client))
      e_policy_wl_iconify_state_change_send(ec, 0);
 
+   if (ec->visibility.force_obscured)
+     {
+        ec->exp_iconify.by_client = 0;
+        return;
+     }
+
    e_client_uniconify(ec);
    ELOGF("TZPOL", "Un-Set ICONIFY BY CLIENT", ec);
    ec->exp_iconify.by_client = 0;