Remove wayland buffer reference

This code is similar to code in weston, but doesn't really work properly
for us in E, since this can blow up buffers behind the async renderer's
back.

The rest of the reference code has been pushed into e_pixmap, so we can
kill this all now.
This commit is contained in:
Derek Foreman 2016-02-16 13:33:25 -06:00 committed by Mike Blumenkrantz
parent 7aef5e74fd
commit ee43c83c7d
2 changed files with 0 additions and 45 deletions

View File

@ -729,16 +729,6 @@ _e_comp_wl_evas_cb_color_set(void *data, Evas_Object *obj, void *event EINA_UNUS
ec->netwm.opacity_changed = EINA_TRUE;
}
static void
_e_comp_wl_buffer_reference_cb_destroy(struct wl_listener *listener, void *data)
{
E_Comp_Wl_Buffer_Ref *ref;
ref = container_of(listener, E_Comp_Wl_Buffer_Ref, destroy_listener);
if ((E_Comp_Wl_Buffer *)data != ref->buffer) return;
ref->buffer = NULL;
}
static void
_e_comp_wl_buffer_cb_destroy(struct wl_listener *listener, void *data EINA_UNUSED)
{
@ -1987,7 +1977,6 @@ _e_comp_wl_subsurface_create(E_Client *ec, E_Client *epc, uint32_t id, struct wl
_e_comp_wl_surface_state_init(&sdata->cached, ec->w, ec->h);
/* set subsurface data properties */
sdata->cached_buffer_ref.buffer = NULL;
sdata->resource = res;
sdata->synchronized = EINA_TRUE;
sdata->parent = epc;
@ -2821,30 +2810,6 @@ e_comp_wl_subsurface_commit(E_Client *ec)
return EINA_TRUE;
}
EINTERN void
e_comp_wl_buffer_reference(E_Comp_Wl_Buffer_Ref *ref, E_Comp_Wl_Buffer *buffer)
{
if ((ref->buffer) && (buffer != ref->buffer))
{
ref->buffer->busy--;
if (ref->buffer->busy == 0)
{
if (!wl_resource_get_client(ref->buffer->resource)) return;
wl_resource_queue_event(ref->buffer->resource, WL_BUFFER_RELEASE);
}
wl_list_remove(&ref->destroy_listener.link);
}
if ((buffer) && (buffer != ref->buffer))
{
buffer->busy++;
wl_signal_add(&buffer->destroy_signal, &ref->destroy_listener);
}
ref->buffer = buffer;
ref->destroy_listener.notify = _e_comp_wl_buffer_reference_cb_destroy;
}
/**
* Get the buffer for a given resource.
*

View File

@ -43,7 +43,6 @@
})
typedef struct _E_Comp_Wl_Buffer E_Comp_Wl_Buffer;
typedef struct _E_Comp_Wl_Buffer_Ref E_Comp_Wl_Buffer_Ref;
typedef struct _E_Comp_Wl_Subsurf_Data E_Comp_Wl_Subsurf_Data;
typedef struct _E_Comp_Wl_Surface_State E_Comp_Wl_Surface_State;
typedef struct _E_Comp_Wl_Client_Data E_Comp_Wl_Client_Data;
@ -64,12 +63,6 @@ struct _E_Comp_Wl_Buffer
uint32_t busy;
};
struct _E_Comp_Wl_Buffer_Ref
{
E_Comp_Wl_Buffer *buffer;
struct wl_listener destroy_listener;
};
struct _E_Comp_Wl_Surface_State
{
int sx, sy;
@ -95,7 +88,6 @@ struct _E_Comp_Wl_Subsurf_Data
} position;
E_Comp_Wl_Surface_State cached;
E_Comp_Wl_Buffer_Ref cached_buffer_ref;
Eina_Bool synchronized;
};
@ -283,7 +275,6 @@ struct _E_Comp_Wl_Client_Data
E_Shell_Data *data;
} shell;
E_Comp_Wl_Buffer_Ref buffer_ref;
E_Comp_Wl_Surface_State pending;
Eina_List *frames;
@ -332,7 +323,6 @@ EINTERN struct wl_resource *e_comp_wl_surface_create(struct wl_client *client, i
EINTERN void e_comp_wl_surface_destroy(struct wl_resource *resource);
EINTERN Eina_Bool e_comp_wl_surface_commit(E_Client *ec);
EINTERN Eina_Bool e_comp_wl_subsurface_commit(E_Client *ec);
EINTERN void e_comp_wl_buffer_reference(E_Comp_Wl_Buffer_Ref *ref, E_Comp_Wl_Buffer *buffer);
E_API E_Comp_Wl_Buffer *e_comp_wl_buffer_get(struct wl_resource *resource);
E_API struct wl_signal e_comp_wl_surface_create_signal_get(void);