E_Client *ec;
Ecore_Event_Handler *eeh_zone_set;
+
+ struct
+ {
+ E_Client_Video_Info_Get_Cb info_get;
+ E_Client_Video_Commit_Data_Release_Cb commit_data_release;
+ E_Client_Video_Tbm_Surface_Get_Cb tbm_surface_get;
+ } cb;
};
static E_Hwc_Policy
EINTERN Eina_Bool
e_client_video_info_get(E_Client *ec, E_Client_Video_Info *info)
{
- IFACE_CHECK_RET(info_get, EINA_FALSE);
+ INTERNAL_DATA_GET;
+
+ if (!ecv)
+ return EINA_FALSE;
+
+ if (ecv->cb.info_get)
+ return ecv->cb.info_get(ec, info);
+ else if (ecv->iface->info_get)
+ return ecv->iface->info_get(ecv->iface, info);
- return ecv->iface->info_get(ecv->iface, info);
+ return EINA_FALSE;
}
EINTERN Eina_Bool
e_client_video_commit_data_release(E_Client *ec, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec)
{
- IFACE_CHECK_RET(commit_data_release, EINA_FALSE);
+ INTERNAL_DATA_GET;
+
+ if (!ecv)
+ return EINA_FALSE;
+
+ if (ecv->cb.commit_data_release)
+ return ecv->cb.commit_data_release(ec, sequence, tv_sec, tv_usec);
+ else if (ecv->iface->commit_data_release)
+ return ecv->iface->commit_data_release(ecv->iface, sequence, tv_sec, tv_usec);
- return ecv->iface->commit_data_release(ecv->iface, sequence, tv_sec, tv_usec);
+ return EINA_FALSE;
}
EINTERN tbm_surface_h
e_client_video_tbm_surface_get(E_Client *ec)
{
- IFACE_CHECK_RET(tbm_surface_get, NULL);
+ INTERNAL_DATA_GET;
+
+ if (!ecv)
+ return NULL;
+
+ if (ecv->cb.tbm_surface_get)
+ return ecv->cb.tbm_surface_get(ec);
+ else if (ecv->iface->tbm_surface_get)
+ return ecv->iface->tbm_surface_get(ecv->iface);
+
+ return NULL;
+}
+
+EINTERN void
+e_client_video_info_get_func_set(E_Client *ec, E_Client_Video_Info_Get_Cb func)
+{
+ API_ENTRY;
+
+ ecv->cb.info_get = func;
+}
+
+EINTERN void
+e_client_video_commit_data_release_func_set(E_Client *ec, E_Client_Video_Commit_Data_Release_Cb func)
+{
+ API_ENTRY;
+
+ ecv->cb.commit_data_release = func;
+}
+
+EINTERN void
+e_client_video_tbm_surface_get_func_set(E_Client *ec, E_Client_Video_Tbm_Surface_Get_Cb func)
+{
+ API_ENTRY;
- return ecv->iface->tbm_surface_get(ecv->iface);
+ ecv->cb.tbm_surface_get = func;
}
tdm_transform transform;
};
+typedef Eina_Bool (*E_Client_Video_Info_Get_Cb)(E_Client *ec, E_Client_Video_Info *info);
+typedef Eina_Bool (*E_Client_Video_Commit_Data_Release_Cb)(E_Client *ec, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec);
+typedef tbm_surface_h (*E_Client_Video_Tbm_Surface_Get_Cb)(E_Client *ec);
+
EINTERN Eina_Bool e_client_video_set(E_Client *ec);
EINTERN void e_client_video_unset(E_Client *ec);
EINTERN tbm_surface_h e_client_video_tbm_surface_get(E_Client *ec);
+EINTERN void e_client_video_info_get_func_set(E_Client *ec, E_Client_Video_Info_Get_Cb func);
+EINTERN void e_client_video_commit_data_release_func_set(E_Client *ec, E_Client_Video_Commit_Data_Release_Cb func);
+EINTERN void e_client_video_tbm_surface_get_func_set(E_Client *ec, E_Client_Video_Tbm_Surface_Get_Cb func);
+
#endif