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);
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);
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);
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); */
* @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;
}
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);
}
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
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;
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);