return NULL;
}
+static Eina_Bool
+_e_video_hwc_cb_client_buffer_change(void *data, int type, void *event)
+{
+ E_Client *ec;
+ E_Event_Client *ev = event;
+ E_Video_Hwc *evh;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(ev, ECORE_CALLBACK_PASS_ON);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(ev->ec, ECORE_CALLBACK_PASS_ON);
+
+ evh = data;
+ ec = ev->ec;
+
+ if (evh->ec != ec)
+ return ECORE_CALLBACK_PASS_ON;
+
+ if (e_object_is_del(E_OBJECT(ec)))
+ return ECORE_CALLBACK_PASS_ON;
+
+ _e_video_hwc_render(evh, __FUNCTION__);
+
+ return ECORE_CALLBACK_PASS_ON;
+}
+
static void
_e_video_hwc_iface_destroy(E_Video_Comp_Iface *iface)
{
return evh;
}
+static void
+_e_video_hwc_client_event_init(E_Video_Hwc *evh)
+{
+ E_LIST_HANDLER_APPEND(evh->ec_event_handler, E_EVENT_CLIENT_BUFFER_CHANGE,
+ _e_video_hwc_cb_client_buffer_change, evh);
+}
+
EINTERN E_Video_Comp_Iface *
e_video_hwc_iface_create(E_Client *ec)
{
if (!evh)
return NULL;
+ _e_video_hwc_client_event_init(evh);
+
if (evh->hwc_policy == E_HWC_POLICY_PLANES)
res = e_video_hwc_planes_init(evh);
else
}
static Eina_Bool
-_e_video_cb_ec_buffer_change(void *data, int type, void *event)
-{
- E_Client *ec;
- E_Event_Client *ev = event;
- E_Video_Hwc_Planes *evhp;
-
- EINA_SAFETY_ON_NULL_RETURN_VAL(ev, ECORE_CALLBACK_PASS_ON);
- EINA_SAFETY_ON_NULL_RETURN_VAL(ev->ec, ECORE_CALLBACK_PASS_ON);
-
- evhp = data;
- ec = ev->ec;
-
- if (evhp->base.ec != ec)
- return ECORE_CALLBACK_PASS_ON;
-
- if (e_object_is_del(E_OBJECT(ec)))
- return ECORE_CALLBACK_PASS_ON;
-
- e_video_hwc_render((E_Video_Hwc *)evhp, __FUNCTION__);
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
_e_video_cb_ec_client_show(void *data, int type, void *event)
{
E_Event_Client *ev = event;
evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_HIDE,
_e_video_cb_evas_hide, evhp);
- E_LIST_HANDLER_APPEND(evhp->base.ec_event_handler, E_EVENT_CLIENT_BUFFER_CHANGE,
- _e_video_cb_ec_buffer_change, evhp);
E_LIST_HANDLER_APPEND(evhp->base.ec_event_handler, E_EVENT_CLIENT_SHOW,
_e_video_cb_ec_client_show, evhp);
E_LIST_HANDLER_APPEND(evhp->base.ec_event_handler, E_EVENT_REMOTE_SURFACE_PROVIDER_VISIBILITY_CHANGE,
}
static Eina_Bool
-_e_video_cb_ec_buffer_change(void *data, int type, void *event)
-{
- E_Client *ec;
- E_Event_Client *ev = event;
- E_Video_Hwc_Windows *evhw;
-
- EINA_SAFETY_ON_NULL_RETURN_VAL(ev, ECORE_CALLBACK_PASS_ON);
- EINA_SAFETY_ON_NULL_RETURN_VAL(ev->ec, ECORE_CALLBACK_PASS_ON);
-
- evhw = data;
- ec = ev->ec;
-
- if (evhw->base.ec != ec)
- return ECORE_CALLBACK_PASS_ON;
-
- if (e_object_is_del(E_OBJECT(ec)))
- return ECORE_CALLBACK_PASS_ON;
-
- /* not interested with non video_surface */
- if (!evhw->base.ec->comp_data->video_client)
- return ECORE_CALLBACK_PASS_ON;
-
- e_video_hwc_render((E_Video_Hwc *)evhw, __FUNCTION__);
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
_e_video_cb_ec_client_show(void *data, int type, void *event)
{
E_Event_Client *ev = event;
e_comp_wl_hook_add(E_COMP_WL_HOOK_SUBSURFACE_CREATE,
_e_video_hwc_windows_cb_hook_subsurface_create, evhw);
- E_LIST_HANDLER_APPEND(evhw->base.ec_event_handler, E_EVENT_CLIENT_BUFFER_CHANGE,
- _e_video_cb_ec_buffer_change, evhw);
E_LIST_HANDLER_APPEND(evhw->base.ec_event_handler, E_EVENT_CLIENT_SHOW,
_e_video_cb_ec_client_show, evhw);
E_LIST_HANDLER_APPEND(evhw->base.ec_event_handler, E_EVENT_REMOTE_SURFACE_PROVIDER_VISIBILITY_CHANGE,