add video_client to ec->comp_data 49/52949/1 accepted/tizen/mobile/20151130.094129 accepted/tizen/tv/20151130.094151 accepted/tizen/wearable/20151130.094202 submit/tizen/20151130.055555
authorBoram Park <boram1288.park@samsung.com>
Thu, 26 Nov 2015 04:29:06 +0000 (13:29 +0900)
committerBoram Park <boram1288.park@samsung.com>
Mon, 30 Nov 2015 04:12:42 +0000 (13:12 +0900)
Change-Id: Ia75838e68a711a9f21f76853a5e7339157c68f31

src/bin/e_comp_wl.c
src/bin/e_comp_wl.h
src/bin/e_pixmap.c

index 56ae07a998739a682d6157d045274c4f45e6fa0b..e7d18146272d16811bb5cc598c1f5dd05ba8d8b6 100644 (file)
@@ -1843,7 +1843,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
              EINA_LIST_FREE(state->damages, dmg)
                {
                   /* not creating damage for ec that shows a underlay video */
-                  if (ec->comp_data->buffer_ref.buffer->type != E_COMP_WL_BUFFER_TYPE_TBM ||
+                  if (ec->comp_data->buffer_ref.buffer->type != E_COMP_WL_BUFFER_TYPE_VIDEO ||
                       !e_comp->wl_comp_data->available_hw_accel.underlay)
                     e_comp_object_damage(ec->frame, dmg->x, dmg->y, dmg->w, dmg->h);
 
@@ -1904,7 +1904,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
    EINA_LIST_FOREACH(state->frames, l, cb)
      eina_list_move(&ec->comp_data->frames, &state->frames, cb);
 
-   if (ec->comp_data->buffer_ref.buffer->type == E_COMP_WL_BUFFER_TYPE_TBM &&
+   if (ec->comp_data->buffer_ref.buffer->type == E_COMP_WL_BUFFER_TYPE_VIDEO &&
        e_comp->wl_comp_data->available_hw_accel.underlay)
      e_pixmap_image_clear(ec->pixmap, 1);
 
@@ -1940,7 +1940,7 @@ _e_comp_wl_surface_cb_attach(struct wl_client *client EINA_UNUSED, struct wl_res
 
    if (buffer_resource)
      {
-        if (!(buffer = e_comp_wl_buffer_get(buffer_resource)))
+        if (!(buffer = e_comp_wl_buffer_get(buffer_resource, resource)))
           {
              ERR("Could not get buffer from resource");
              wl_client_post_no_memory(client);
@@ -3054,6 +3054,7 @@ _e_comp_wl_client_cb_new(void *data EINA_UNUSED, E_Client *ec)
    ec->comp_data->layer = p_cdata->layer;
    ec->comp_data->fetch.win_type = p_cdata->fetch.win_type;
    ec->comp_data->fetch.layer = p_cdata->fetch.layer;
+   ec->comp_data->video_client = p_cdata->video_client;
 
    /* add this client to the hash */
    /* eina_hash_add(clients_win_hash, &win, ec); */
@@ -3998,7 +3999,7 @@ e_comp_wl_buffer_reference(E_Comp_Wl_Buffer_Ref *ref, E_Comp_Wl_Buffer *buffer)
  * @returns a new E_Comp_Wl_Buffer object
  */
 EAPI E_Comp_Wl_Buffer *
-e_comp_wl_buffer_get(struct wl_resource *resource)
+e_comp_wl_buffer_get(struct wl_resource *resource, struct wl_resource *surface)
 {
    E_Comp_Wl_Buffer *buffer = NULL;
    struct wl_listener *listener;
@@ -4025,13 +4026,14 @@ e_comp_wl_buffer_get(struct wl_resource *resource)
      }
    else
      {
-        tbm_format format;
+        E_Pixmap *ep = wl_resource_get_user_data(surface);
+        E_Comp_Wl_Client_Data *p_cdata = e_pixmap_cdata_get(ep);
+
         cdata = e_comp->wl_comp_data;
-        tbm_surf = wayland_tbm_server_get_surface(cdata->tbm.server, resource);
-        format = tbm_surface_get_format(tbm_surf);
-        if (tbm_surf && format != TBM_FORMAT_ARGB8888 && format != TBM_FORMAT_XRGB8888)
+        if (p_cdata && p_cdata->video_client)
           {
-             buffer->type = E_COMP_WL_BUFFER_TYPE_TBM;
+             tbm_surf = wayland_tbm_server_get_surface(cdata->tbm.server, resource);
+             buffer->type = E_COMP_WL_BUFFER_TYPE_VIDEO;
              buffer->w = tbm_surface_get_width(tbm_surf);
              buffer->h = tbm_surface_get_height(tbm_surf);
           }
index 3c29fe16d81410dd9767fafc9a67fea6fb6e0701..3fb7d2f3190fed0a5cb1e144bc93d31dcdb5d7cc 100644 (file)
@@ -53,7 +53,7 @@ typedef enum _E_Comp_Wl_Buffer_Type
    E_COMP_WL_BUFFER_TYPE_NONE = 0,
    E_COMP_WL_BUFFER_TYPE_SHM = 1,
    E_COMP_WL_BUFFER_TYPE_NATIVE = 2,
-   E_COMP_WL_BUFFER_TYPE_TBM = 3
+   E_COMP_WL_BUFFER_TYPE_VIDEO = 3,
 } E_Comp_Wl_Buffer_Type;
 
 struct _E_Comp_Wl_Aux_Hint
@@ -373,6 +373,7 @@ struct _E_Comp_Wl_Client_Data
    Eina_Bool frame_update : 1;
    Eina_Bool focus_update : 1;
    Eina_Bool opaque_state : 1;
+   Eina_Bool video_client : 1;
    unsigned char accepts_focus : 1;
    unsigned char conformant : 1;
    E_Window_Type win_type;
@@ -407,7 +408,7 @@ EINTERN void e_comp_wl_surface_attach(E_Client *ec, E_Comp_Wl_Buffer *buffer);
 EINTERN Eina_Bool e_comp_wl_surface_commit(E_Client *ec);
 EINTERN Eina_Bool e_comp_wl_subsurface_commit(E_Client *ec);
 EAPI void e_comp_wl_buffer_reference(E_Comp_Wl_Buffer_Ref *ref, E_Comp_Wl_Buffer *buffer);
-EAPI E_Comp_Wl_Buffer *e_comp_wl_buffer_get(struct wl_resource *resource);
+EAPI E_Comp_Wl_Buffer *e_comp_wl_buffer_get(struct wl_resource *resource, struct wl_resource *surface);
 
 EAPI struct wl_signal e_comp_wl_surface_create_signal_get(E_Comp *comp);
 EAPI double e_comp_wl_idle_time_get(void);
index 53dd510616bd1698d785ed31f4a1464403736105..617237487b1c80e2fd38f1ad7b7c3fcfe9402dbd 100644 (file)
@@ -719,7 +719,7 @@ e_pixmap_resource_set(E_Pixmap *cp, void *resource)
                }
 
           }
-        else if (buffer->type == E_COMP_WL_BUFFER_TYPE_TBM)
+        else if (buffer->type == E_COMP_WL_BUFFER_TYPE_VIDEO)
           {
              E_Comp_Wl_Data *wl_comp_data = (E_Comp_Wl_Data *)e_comp->wl_comp_data;
              tbm_surface_h tbm_surf = wayland_tbm_server_get_surface(wl_comp_data->tbm.server, buffer->resource);