}
EINTERN void
-e_comp_canvas_norender_push_except_video(void)
+e_comp_canvas_norender_push_except_video(E_Client *ec)
{
E_Comp_Screen *e_comp_screen;
E_Output *primary_output;
e_comp_screen = e_comp->e_comp_screen;
primary_output = e_comp_screen_primary_output_get(e_comp_screen);
+ if (eina_list_data_find(e_comp->norender_ec_list, ec))
+ {
+ ELOGF("COMP", "Added to norender running list already", ec);
+ return;
+ }
+ e_comp->norender_ec_list = eina_list_append(e_comp->norender_ec_list, ec);
+
TRACE_DS_BEGIN(Canvas NoRenderPush:%d, e_comp->norender_except_video + 1);
e_output_norender_push_except_video(primary_output);
e_comp->norender_except_video++;
}
EINTERN void
-e_comp_canvas_norender_pop_except_video(void)
+e_comp_canvas_norender_pop_except_video(E_Client *ec)
{
E_Comp_Screen *e_comp_screen;
E_Output *primary_output;
+ if (!eina_list_data_find(e_comp->norender_ec_list, ec))
+ {
+ ELOGF("COMP", "Can't find norender running list", ec);
+ return;
+ }
+ e_comp->norender_ec_list = eina_list_remove(e_comp->norender_ec_list, ec);
+
if (e_comp->norender_except_video <= 0) return;
e_comp_screen = e_comp->e_comp_screen;
static Eina_Clist pol_job_group_head = EINA_CLIST_INIT(pol_job_group_head);
static Eina_Bool pol_job_exec_walking = EINA_FALSE;
+static Eina_Bool pol_vis_disable_norender = EINA_FALSE;
static Eina_Inlist *_e_pol_vis_hooks[] =
{
(job->type == E_VIS_JOB_TYPE_LAYER_LOWER))
{
if (_e_vis_client_norender_need(vc->ec))
- e_comp_canvas_norender_push_except_video();
+ {
+ if (!pol_vis_disable_norender)
+ e_comp_canvas_norender_push_except_video(vc->ec);
+ else
+ ELOGF("POL_VIS", "Do not activate norender...", vc->ec);
+ }
}
return EINA_TRUE;
(job->type == E_VIS_JOB_TYPE_LAYER_LOWER))
{
if (_e_vis_client_norender_need(job->vc->ec))
- e_comp_canvas_norender_pop_except_video();
+ e_comp_canvas_norender_pop_except_video(job->vc->ec);
}
VS_INF(job->vc->ec, "FREE JOB:%p, type:%d", job, job->type);
(job->type == E_VIS_JOB_TYPE_LAYER_LOWER))
{
if (_e_vis_client_norender_need(job->vc->ec))
- e_comp_canvas_norender_pop_except_video();
+ e_comp_canvas_norender_pop_except_video(job->vc->ec);
}
goto end;
}
break;
case E_VIS_JOB_TYPE_LOWER:
if (_e_vis_client_norender_need(ec))
- e_comp_canvas_norender_pop_except_video();
+ e_comp_canvas_norender_pop_except_video(ec);
if (ec)
{
break;
case E_VIS_JOB_TYPE_HIDE:
if (_e_vis_client_norender_need(ec))
- e_comp_canvas_norender_pop_except_video();
+ e_comp_canvas_norender_pop_except_video(ec);
if (ec) evas_object_hide(ec->frame);
break;
case E_VIS_JOB_TYPE_LAYER_LOWER:
if (_e_vis_client_norender_need(ec))
- e_comp_canvas_norender_pop_except_video();
+ e_comp_canvas_norender_pop_except_video(ec);
if (vc) e_client_layer_set(ec, vc->layer);
break;
case E_VIS_JOB_TYPE_ICONIFY:
if (_e_vis_client_norender_need(ec))
- e_comp_canvas_norender_pop_except_video();
+ e_comp_canvas_norender_pop_except_video(ec);
e_client_iconify(ec);
break;
_e_vis_client_below_uniconify_skip_set(vc, skip);
}
+E_API void
+e_policy_visibility_norender_disable_set(Eina_Bool disable)
+{
+ ELOGF("POL_VIS", "NO RENDER DISABLE SET: %d", NULL, disable);
+ pol_vis_disable_norender = disable;
+}
+
E_API E_Pol_Vis_Hook *
e_policy_visibility_hook_add(E_Pol_Vis_Hook_Type type, E_Pol_Vis_Hook_Cb cb, const void *data)
{