Eina_List *render_list;
int norender;
+ int norender_except_video;
void (*func_memory_dump) (void);
return e_output_norender_get(primary_output);
}
+
+EINTERN void
+e_comp_canvas_norender_push_except_video(void)
+{
+ 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);
+
+ 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++;
+ TRACE_DS_END();
+}
+
+EINTERN void
+e_comp_canvas_norender_pop_except_video(void)
+{
+ E_Comp_Screen *e_comp_screen;
+ E_Output *primary_output;
+
+ if (e_comp->norender_except_video <= 0) return;
+
+ e_comp_screen = e_comp->e_comp_screen;
+ primary_output = e_comp_screen_primary_output_get(e_comp_screen);
+
+ TRACE_DS_BEGIN(Canvas NoRenderPop:%d, e_comp->norender_except_video - 1);
+ e_output_norender_pop_except_video(primary_output);
+ e_comp->norender_except_video--;
+ TRACE_DS_END();
+}
E_API void e_comp_canvas_norender_pop(void);
EINTERN int e_comp_canvas_norender_get(void);
+EINTERN void e_comp_canvas_norender_push_except_video(void);
+EINTERN void e_comp_canvas_norender_pop_except_video(void);
+
/* the following functions are used for adjusting root window coordinates
* to/from canvas coordinates.
* this ensures correct positioning when running E as a nested compositor
return hwc->norender;
}
+EINTERN void
+e_hwc_norender_push_except_video(E_Hwc *hwc)
+{
+ EINA_SAFETY_ON_FALSE_RETURN(hwc);
+
+ hwc->norender_except_video++;
+}
+
+EINTERN void
+e_hwc_norender_pop_except_video(E_Hwc *hwc)
+{
+ EINA_SAFETY_ON_FALSE_RETURN(hwc);
+
+ if (hwc->norender_except_video <= 0) return;
+
+ hwc->norender_except_video--;
+}
+
+EINTERN int
+e_hwc_norender_get_except_video(E_Hwc *hwc)
+{
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(hwc, 0);
+
+ return hwc->norender_except_video;
+}
+
static const char *
_e_hwc_prop_name_get_by_id(E_Hwc *hwc, unsigned int id)
{
E_Hwc_Window *presentation_hwc_window;
int norender;
+ int norender_except_video;
/* for fps */
double fps;
E_API E_Hwc_Sync_Callback *e_hwc_sync_callback_add(E_Hwc *hwc, E_Hwc_Sync_Done_Cb cb, void *data);
E_API void e_hwc_sync_callback_del(E_Hwc_Sync_Callback *sync_callback);
+EINTERN void e_hwc_norender_push_except_video(E_Hwc *hwc);
+EINTERN void e_hwc_norender_pop_except_video(E_Hwc *hwc);
+EINTERN int e_hwc_norender_get_except_video(E_Hwc *hwc);
+
#endif
#endif
return e_hwc_norender_get(output->hwc);
}
+EINTERN void
+e_output_norender_push_except_video(E_Output *output)
+{
+ EINA_SAFETY_ON_FALSE_RETURN(output);
+
+ e_hwc_norender_push_except_video(output->hwc);
+}
+
+EINTERN void
+e_output_norender_pop_except_video(E_Output *output)
+{
+ EINA_SAFETY_ON_FALSE_RETURN(output);
+
+ e_hwc_norender_pop_except_video(output->hwc);
+}
+
static const char *
_e_output_prop_name_get_by_id(E_Output *output, unsigned int id)
{
E_API Eina_Bool e_output_property_get(E_Output *output, unsigned int id, output_prop_value *value);
E_API Eina_Bool e_output_property_set(E_Output *output, unsigned int id, output_prop_value value);
+EINTERN void e_output_norender_push_except_video(E_Output *output);
+EINTERN void e_output_norender_pop_except_video(E_Output *output);
+
#endif
#endif
(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();
+ e_comp_canvas_norender_push_except_video();
return EINA_TRUE;
}
(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();
+ 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);
(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();
+ e_comp_canvas_norender_pop_except_video();
goto end;
}
ec->exp_iconify.not_raise = 0;
break;
case E_VIS_JOB_TYPE_LOWER:
- e_comp_canvas_norender_pop();
+ e_comp_canvas_norender_pop_except_video();
if (ec)
{
e_client_lower(ec);
}
break;
case E_VIS_JOB_TYPE_HIDE:
- e_comp_canvas_norender_pop();
+ 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();
+ 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();
+ e_comp_canvas_norender_pop_except_video();
e_client_iconify(ec);
break;
case E_VIS_JOB_TYPE_SHOW: