e_policy_visibility: don't make norender if ec is MaskWindow and DimWindow 06/250206/5
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 22 Dec 2020 05:42:42 +0000 (14:42 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Wed, 23 Dec 2020 04:38:52 +0000 (13:38 +0900)
it is hotfix fot tv product

Change-Id: I9d592f15b448bb473bd15ed902aa3db1fb4ee230

src/bin/e_policy_visibility.c

index 4d079917086b19c1be5ace6f6bde117dd4f0e12a..88a8e58b3a2ff2a27138471ac1cd246c1c553a11 100644 (file)
@@ -615,6 +615,19 @@ _e_vis_job_find(E_Vis_Client *vc, E_Vis_Job_Type type)
    return EINA_FALSE;
 }
 
+static Eina_Bool
+_e_vis_client_norender_need(E_Client *ec)
+{
+   if (!ec) return EINA_TRUE;
+   if (!ec->icccm.name) return EINA_TRUE;
+
+   if (!e_util_strcmp(ec->icccm.name, "DimWindow") ||
+       !e_util_strcmp(ec->icccm.name, "MaskWindow"))
+     return EINA_FALSE;
+
+   return EINA_TRUE;
+}
+
 static Eina_Bool
 _e_vis_job_add(E_Vis_Client *vc, E_Vis_Job_Type type, Ecore_Task_Cb timeout_func)
 {
@@ -633,7 +646,10 @@ _e_vis_job_add(E_Vis_Client *vc, E_Vis_Job_Type type, Ecore_Task_Cb timeout_func
        (job->type == E_VIS_JOB_TYPE_HIDE) ||
        (job->type == E_VIS_JOB_TYPE_ICONIFY) ||
        (job->type == E_VIS_JOB_TYPE_LAYER_LOWER))
-     e_comp_canvas_norender_push_except_video();
+     {
+        if (_e_vis_client_norender_need(vc->ec))
+          e_comp_canvas_norender_push_except_video();
+     }
 
    return EINA_TRUE;
 }
@@ -649,7 +665,10 @@ _e_vis_job_del(Eina_Clist *elem)
        (job->type == E_VIS_JOB_TYPE_HIDE) ||
        (job->type == E_VIS_JOB_TYPE_ICONIFY) ||
        (job->type == E_VIS_JOB_TYPE_LAYER_LOWER))
-     e_comp_canvas_norender_pop_except_video();
+     {
+        if (_e_vis_client_norender_need(job->vc->ec))
+          e_comp_canvas_norender_pop_except_video();
+     }
 
    VS_INF(job->vc->ec, "FREE JOB:%p, type:%d", job, job->type);
    E_FREE_FUNC(job->timer, ecore_timer_del);
@@ -680,7 +699,10 @@ _e_vis_job_exec(Eina_Clist *elem)
             (job->type == E_VIS_JOB_TYPE_HIDE) ||
             (job->type == E_VIS_JOB_TYPE_ICONIFY) ||
             (job->type == E_VIS_JOB_TYPE_LAYER_LOWER))
-          e_comp_canvas_norender_pop_except_video();
+          {
+             if (_e_vis_client_norender_need(job->vc->ec))
+               e_comp_canvas_norender_pop_except_video();
+          }
         goto end;
      }
 
@@ -1621,7 +1643,9 @@ _e_vis_ec_job_exec(E_Client *ec, E_Vis_Job_Type type)
          ec->exp_iconify.not_raise = 0;
          break;
       case E_VIS_JOB_TYPE_LOWER:
-         e_comp_canvas_norender_pop_except_video();
+         if (_e_vis_client_norender_need(ec))
+           e_comp_canvas_norender_pop_except_video();
+
          if (ec)
            {
               e_client_lower(ec);
@@ -1630,15 +1654,21 @@ _e_vis_ec_job_exec(E_Client *ec, E_Vis_Job_Type type)
            }
          break;
       case E_VIS_JOB_TYPE_HIDE:
-         e_comp_canvas_norender_pop_except_video();
+         if (_e_vis_client_norender_need(ec))
+           e_comp_canvas_norender_pop_except_video();
+
          if (ec) evas_object_hide(ec->frame);
          break;
       case E_VIS_JOB_TYPE_LAYER_LOWER:
-         e_comp_canvas_norender_pop_except_video();
+         if (_e_vis_client_norender_need(ec))
+           e_comp_canvas_norender_pop_except_video();
+
          if (vc) e_client_layer_set(ec, vc->layer);
          break;
       case E_VIS_JOB_TYPE_ICONIFY:
-         e_comp_canvas_norender_pop_except_video();
+         if (_e_vis_client_norender_need(ec))
+           e_comp_canvas_norender_pop_except_video();
+
          e_client_iconify(ec);
          break;
       case E_VIS_JOB_TYPE_SHOW: