}
E_API Eina_Bool
-e_client_video_property_set(E_Client *ec, unsigned int id, tdm_value value)
+e_client_video_property_set(E_Client *ec, unsigned int id, tdm_value value, Eina_Bool sync)
{
IFACE_CHECK_RET(property_set, EINA_FALSE);
- return ecv->iface->property_set(ecv->iface, id, value);
+ return ecv->iface->property_set(ecv->iface, id, value, sync);
}
EINTERN Eina_Bool
E_API Eina_Bool e_client_video_available_properties_get(E_Client *ec, const tdm_prop **props, int *count);
E_API Eina_Bool e_client_video_property_get(E_Client *ec, unsigned int id, tdm_value *value);
-E_API Eina_Bool e_client_video_property_set(E_Client *ec, unsigned int id, tdm_value value);
+
+/** Set tdm_value of property of given id for E_Client.
+ *
+ * This function sets tdm_value of property of given id for tdm instance
+ * associated with E_Client.
+ *
+ * @in ec The E_Client instance to be used.
+ * id The property id which tdm_value will be set to.
+ * value The tdm_value to be set.
+ * sync If EINA_FALSE is given, the property will be set when
+ * wl_surface.commit happened, otherwise, it will be set immediately
+ * regardless this E_Client is visible or not.
+ * @return EINA_TRUE if success. Otherwise, EINA_FALSE.
+ */
+E_API Eina_Bool e_client_video_property_set(E_Client *ec, unsigned int id, tdm_value value, Eina_Bool sync);
EINTERN Eina_Bool e_client_video_property_delay_set(E_Client *ec, unsigned int id, tdm_value value);
EINTERN Eina_Bool e_client_video_info_get(E_Client *ec, E_Client_Video_Info *info);
}
v.u32 = value;
- e_client_video_property_set(video->ec, id, v);
+ e_client_video_property_set(video->ec, id, v, EINA_FALSE);
}
static Eina_Bool
{
void (*destroy)(E_Video_Comp_Iface *iface);
Eina_Bool (*property_get)(E_Video_Comp_Iface *iface, unsigned int id, tdm_value *value);
- Eina_Bool (*property_set)(E_Video_Comp_Iface *iface, unsigned int id, tdm_value value);
+ Eina_Bool (*property_set)(E_Video_Comp_Iface *iface, unsigned int id, tdm_value value, Eina_Bool sync);
Eina_Bool (*property_delay_set)(E_Video_Comp_Iface *iface, unsigned int id, tdm_value value);
Eina_Bool (*available_properties_get)(E_Video_Comp_Iface *iface, const tdm_prop **props, int *count);
/* FIXME for hwc windows mode */
}
static Eina_Bool
-_e_video_hwc_iface_property_set(E_Video_Comp_Iface *iface, unsigned int id, tdm_value value)
+_e_video_hwc_iface_property_set(E_Video_Comp_Iface *iface, unsigned int id, tdm_value value, Eina_Bool sync)
{
IFACE_ENTRY;
- return evh->backend.property_set(evh, id, value);
+ return evh->backend.property_set(evh, id, value, sync);
}
static Eina_Bool
{
void (*destroy)(E_Video_Hwc *evh);
Eina_Bool (*property_get)(E_Video_Hwc *evh, unsigned int id, tdm_value *value);
- Eina_Bool (*property_set)(E_Video_Hwc *evh, unsigned int id, tdm_value value);
+ Eina_Bool (*property_set)(E_Video_Hwc *evh, unsigned int id, tdm_value value, Eina_Bool sync);
Eina_Bool (*available_properties_get)(E_Video_Hwc *evh, const tdm_prop **props, int *count);
Eina_Bool (*buffer_commit)(E_Video_Hwc *evh, E_Comp_Wl_Video_Buf *vbuf);
Eina_Bool (*check_if_pp_needed)(E_Video_Hwc *evh);
}
static Eina_Bool
-_e_video_hwc_planes_iface_property_set(E_Video_Hwc *evh, unsigned int id, tdm_value value)
+_e_video_hwc_planes_iface_property_set(E_Video_Hwc *evh, unsigned int id, tdm_value value, Eina_Bool sync)
{
E_Video_Hwc_Planes *evhp;
Tdm_Prop_Value prop;
* Set property with assigning layer right away if allowed_attribute
* flag is set. The reason why we have to do like this isn't figured
* yet. It's for backward compatibility. */
- if (e_client_video_property_allow_get(evhp->base.ecv))
+ if ((e_client_video_property_allow_get(evhp->base.ecv)) ||
+ (sync == EINA_TRUE))
{
if (!_e_video_hwc_planes_tdm_layer_set(evhp))
{
}
static Eina_Bool
-_e_video_hwc_windows_iface_property_set(E_Video_Hwc *evh, unsigned int id, tdm_value value)
+_e_video_hwc_windows_iface_property_set(E_Video_Hwc *evh, unsigned int id, tdm_value value, Eina_Bool sync)
{
E_Video_Hwc_Windows *evhw;
const char *name;
return EINA_FALSE;
}
- if (e_client_video_property_allow_get(evhw->base.ecv))
+ if ((e_client_video_property_allow_get(evhw->base.ecv)) ||
+ (sync == EINA_TRUE))
{
VIN("set_attribute now : property(%s), value(%d)", evhw->base.ec, name, value.u32);