From 8325b7b21abff15243b923b71827cfbc114504b7 Mon Sep 17 00:00:00 2001 From: Seunghun Lee Date: Tue, 18 Feb 2020 20:46:59 +0900 Subject: [PATCH] video:hwc_planes: reduce duplicate codes. Change-Id: Ie57acaf419f0549d65e75852ed6d1279512f1b32 --- src/bin/video/iface/e_video_hwc_planes.c | 122 ++++++++++++++--------- 1 file changed, 74 insertions(+), 48 deletions(-) diff --git a/src/bin/video/iface/e_video_hwc_planes.c b/src/bin/video/iface/e_video_hwc_planes.c index 93513e1d96..8519d4398f 100644 --- a/src/bin/video/iface/e_video_hwc_planes.c +++ b/src/bin/video/iface/e_video_hwc_planes.c @@ -37,6 +37,52 @@ typedef struct _Tdm_Prop_Value 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) { @@ -657,27 +703,19 @@ _e_video_hwc_planes_property_post_set(E_Video_Hwc_Planes *evhp, 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 @@ -686,39 +724,27 @@ _e_video_hwc_planes_property_pre_set(E_Video_Hwc_Planes *evhp, 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 -- 2.34.1