static Eina_List *video_layers = NULL;
+static Eina_Bool
+_e_video_hwc_planes_prop_list_update(Eina_List *prop_list, const char *name, tdm_value value)
+{
+ Tdm_Prop_Value *prop;
+ Eina_List *l;
+
+ EINA_LIST_FOREACH(prop_list, l, prop)
+ {
+ if (strncmp(name, prop->name, TDM_NAME_LEN))
+ continue;
+
+ VDB("update property(%s) value(%d -> %d)",
+ NULL, name, prop->value.u32, value.u32);
+
+ prop->value.u32 = value.u32;
+
+ return EINA_TRUE;
+ }
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool
+_e_video_hwc_planes_prop_list_append(Eina_List **prop_list, unsigned int id, const char *name, tdm_value value)
+{
+ Tdm_Prop_Value *prop;
+
+ prop = calloc(1, sizeof(Tdm_Prop_Value));
+ if (!prop)
+ {
+ VER("failed to alloc memory: property(%s) value(%d)",
+ NULL, name, value.u32);
+ return EINA_FALSE;
+ }
+
+ prop->value.u32 = value.u32;
+ prop->id = id;
+ memcpy(prop->name, name, sizeof(TDM_NAME_LEN));
+
+ VIN("Add property(%s) value(%d)", NULL, name, value.u32);
+
+ *prop_list = eina_list_append(*prop_list, prop);
+
+ return EINA_TRUE;
+}
+
static tdm_layer *
_tdm_output_video_layer_get(tdm_output *output)
{
const char *name,
tdm_value value)
{
- Tdm_Prop_Value *prop = NULL;
- const Eina_List *l = NULL;
+ Eina_Bool res;
- EINA_LIST_FOREACH(evhp->tdm.late_prop_list, l, prop)
- {
- if (!strncmp(name, prop->name, TDM_NAME_LEN))
- {
- prop->value.u32 = value.u32;
- VDB("update property(%s) value(%d)", evhp->base.ec, prop->name, value.u32);
- return;
- }
- }
+ VDB("property_post_set: property(%s) value(%d)",
+ evhp->base.ec, name, value.u32);
- prop = calloc(1, sizeof(Tdm_Prop_Value));
- if(!prop) return;
+ res = _e_video_hwc_planes_prop_list_update(evhp->tdm.late_prop_list,
+ name,
+ value);
+ if (res)
+ return;
- prop->value.u32 = value.u32;
- prop->id = id;
- memcpy(prop->name, name, sizeof(TDM_NAME_LEN));
- VIN("Add property(%s) value(%d)", evhp->base.ec, prop->name, value.u32);
- evhp->tdm.late_prop_list = eina_list_append(evhp->tdm.late_prop_list, prop);
+ _e_video_hwc_planes_prop_list_append(&evhp->tdm.late_prop_list,
+ id, name, value);
}
static Eina_Bool
const char *name,
tdm_value value)
{
- Tdm_Prop_Value *prop = NULL;
- const Eina_List *l = NULL;
+ Eina_Bool res;
- EINA_LIST_FOREACH(evhp->tdm.prop_list, l, prop)
- {
- if (!strncmp(name, prop->name, TDM_NAME_LEN))
- {
- VDB("find prop data(%s) update value(%d -> %d)", evhp->base.ec,
- prop->name, (unsigned int)prop->value.u32, (unsigned int)value.u32);
- prop->value.u32 = value.u32;
- return EINA_TRUE;
- }
- }
- EINA_LIST_FOREACH(evhp->tdm.late_prop_list, l, prop)
- {
- if (!strncmp(name, prop->name, TDM_NAME_LEN))
- {
- VDB("find prop data(%s) update value(%d -> %d)", evhp->base.ec,
- prop->name, (unsigned int)prop->value.u32, (unsigned int)value.u32);
- prop->value.u32 = value.u32;
- return EINA_TRUE;
- }
- }
+ VDB("property_pre_set: property(%s) value(%d)",
+ evhp->base.ec, name, value.u32);
- prop = calloc(1, sizeof(Tdm_Prop_Value));
- if(!prop) return EINA_FALSE;
- prop->value.u32 = value.u32;
- prop->id = id;
- memcpy(prop->name, name, sizeof(TDM_NAME_LEN));
- VIN("Add property(%s) value(%d)", evhp->base.ec, prop->name, value.u32);
- evhp->tdm.prop_list = eina_list_append(evhp->tdm.prop_list, prop);
+ res = _e_video_hwc_planes_prop_list_update(evhp->tdm.prop_list,
+ name,
+ value);
+ if (res)
+ return EINA_TRUE;
- return EINA_TRUE;
+ res = _e_video_hwc_planes_prop_list_update(evhp->tdm.late_prop_list,
+ name,
+ value);
+ if (res)
+ return EINA_TRUE;
+
+ res = _e_video_hwc_planes_prop_list_append(&evhp->tdm.prop_list,
+ id, name, value);
+
+ return res;
}
static Eina_Bool