video: need to late call for mute attribute 52/118252/1
authorkyoungsik park <kstyle.park@samsung.com>
Thu, 9 Mar 2017 10:02:52 +0000 (19:02 +0900)
committerkyoungsik park <kstyle.park@samsung.com>
Thu, 9 Mar 2017 10:02:52 +0000 (19:02 +0900)
Change-Id: Ice8285007a955806510ef8c3f4fbbd563716d48c
Signed-off-by: kyoungsik park <kstyle.park@samsung.com>
src/e_devicemgr_video.c

index fa59063ab1171be0b526f7df68feb2c410321b26..aef9ac982d0cba9e83d516d38fd35389b5b94323 100755 (executable)
@@ -76,6 +76,7 @@ struct _E_Video
 
    /* attributes */
    Eina_List *tdm_prop_list;
+   Eina_List *late_tdm_prop_list;
    int tdm_mute_id;
 
    Eina_Bool  cb_registered;
@@ -1181,6 +1182,18 @@ _e_video_frame_buffer_show(E_Video *video, E_Devmgr_Buf *mbuf)
 
    video->waiting_vblank = EINA_TRUE;
 
+   if (video->layer)
+     {
+        // need late call tdm property in list
+        Tdm_Prop_Value *prop;
+        Eina_List *l = NULL;
+        EINA_LIST_FOREACH(video->late_tdm_prop_list, l, prop)
+          {
+             VIN("call property(%s), value(%d)", prop->name, (unsigned int)prop->value.u32);
+             tdm_layer_set_property(video->layer, prop->id, prop->value);
+          }
+     }
+
    topmost = find_topmost_parent_get(video->ec);
    if (topmost && (topmost->argb || topmost->comp_data->sub.below_obj) &&
        !e_comp_object_mask_has(video->ec->frame))
@@ -1592,6 +1605,14 @@ _e_video_destroy(E_Video *video)
              free(tdm_prop);
           }
      }
+   if(video->late_tdm_prop_list)
+     {
+        Tdm_Prop_Value *tdm_prop;
+        EINA_LIST_FREE(video->late_tdm_prop_list, tdm_prop)
+          {
+             free(tdm_prop);
+          }
+     }
 
    if (video->input_buffer_list)
      NEVER_GET_HERE();
@@ -1599,6 +1620,8 @@ _e_video_destroy(E_Video *video)
      NEVER_GET_HERE();
    if (video->tdm_prop_list)
      NEVER_GET_HERE();
+   if (video->late_tdm_prop_list)
+     NEVER_GET_HERE();
 
    /* destroy converter second */
    if (video->pp)
@@ -2144,20 +2167,36 @@ _e_devicemgr_video_object_cb_set_attribute(struct wl_client *client,
                   return;
                }
           }
+        EINA_LIST_FOREACH(video->late_tdm_prop_list, l, prop)
+          {
+             if (!strncmp(name, prop->name, TDM_NAME_LEN))
+               {
+                  VDB("find prop data(%s) update value(%d -> %d)", prop->name, (unsigned int)prop->value.u32, (unsigned int)value);
+                  prop->value.u32 = value;
+                  return;
+               }
+          }
 
         prop = calloc(1, sizeof(Tdm_Prop_Value));
         if(!prop) return;
         prop->value.u32 = value;
         prop->id = props[i].id;
         memcpy(prop->name, props[i].name, sizeof(props[i].name));
-        VDB("Add property(%s) value(%d)", prop->name, value);
-        video->tdm_prop_list = eina_list_append(video->tdm_prop_list, prop);
+        VIN("Add property(%s) value(%d)", prop->name, value);
+        if (!strncmp(prop->name, "mute", TDM_NAME_LEN))
+          {
+             video->late_tdm_prop_list = eina_list_append(video->late_tdm_prop_list, prop);
+          }
+        else
+          {
+             video->tdm_prop_list = eina_list_append(video->tdm_prop_list, prop);
+          }
      }
    // if set layer call property
    else
      {
         tdm_value v = {.u32 = value};
-        VIN("set layer: call property");
+        VIN("set layer: call property(%s), value(%d)", name, value);
         tdm_layer_set_property(video->layer, props[i].id, v);
      }
 }