Eina_Rectangle opaque;
uuid_t uuid;
- E_Comp_Wl_Client_Data *cdata;
- Eina_Bool own_cdata : 1;
-
Eina_Bool usable : 1;
Eina_Bool dirty : 1;
Eina_Bool image_argb : 1;
static void
_e_pixmap_free(E_Pixmap *cp)
{
- if (cp->own_cdata)
- {
- E_FREE(cp->cdata);
- cp->own_cdata = EINA_FALSE;
- }
if (cp->data_pool)
{
if (cp->client && cp->client->frame)
cp->w = cp->h = 0;
cp->refcount = 1;
cp->dirty = 1;
- cp->cdata = E_NEW(E_Comp_Wl_Client_Data, 1);
cp->buffer_destroy_listener.notify = _e_pixmap_cb_buffer_destroy;
- if (!cp->cdata)
- {
- E_FREE(cp);
- return NULL;
- }
- cp->cdata->pending.buffer_viewport.buffer.transform = WL_OUTPUT_TRANSFORM_NORMAL;
- cp->cdata->pending.buffer_viewport.buffer.scale = 1;
- cp->cdata->pending.buffer_viewport.buffer.src_width = wl_fixed_from_int(-1);
- cp->cdata->pending.buffer_viewport.surface.width = -1;
- cp->cdata->pending.buffer_viewport.changed = 0;
- cp->own_cdata = EINA_TRUE;
wl_signal_init(&cp->events.destroy);
wl_signal_init(&cp->events.buffer_clear);
{
surface_resource = (struct wl_resource *)id;
- if (cp->cdata)
- cp->cdata->wl_surface = surface_resource;
-
cp->surface_resource_destroy.notify = _e_pixmap_cb_surface_resource_destroy;
wl_resource_add_destroy_listener(surface_resource, &cp->surface_resource_destroy);
}
e_pixmap_cdata_get(E_Pixmap *cp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cp, NULL);
- return (E_Comp_Wl_Client_Data*)cp->cdata;
-}
-
-EINTERN void
-e_pixmap_cdata_set(E_Pixmap *cp, E_Comp_Wl_Client_Data *cdata)
-{
- E_Comp_Wl_Client_Data *cd = (E_Comp_Wl_Client_Data*)cdata;
-
- EINA_SAFETY_ON_NULL_RETURN(cp);
-
- if (cp->cdata)
- {
- if (cp->own_cdata)
- {
- if (cd)
- {
- cd->wl_surface = cp->cdata->wl_surface;
- cd->scaler.viewport = cp->cdata->scaler.viewport;
- cd->pending.buffer_viewport = cp->cdata->pending.buffer_viewport;
- }
-
- E_FREE(cp->cdata);
- cp->own_cdata = EINA_FALSE;
- }
- }
-
- cp->cdata = cd;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(cp->client, NULL);
+ return e_client_cdata_get(cp->client);
}
E_API E_Pixmap_Hook *
EINTERN void e_pixmap_shutdown(void);
EINTERN void e_pixmap_win_id_del(E_Pixmap *cp);
-EINTERN void e_pixmap_cdata_set(E_Pixmap *cp, E_Comp_Wl_Client_Data *cdata);
EINTERN Eina_Bool e_pixmap_dirty_get(E_Pixmap *cp);
EINTERN void e_pixmap_usable_set(E_Pixmap *cp, Eina_Bool set);
EINTERN void e_pixmap_dirty(E_Pixmap *cp);
if (ec->internal)
ec->icccm.delete_request = EINA_TRUE;
- e_pixmap_cdata_set(ec->pixmap, &surface->base);
-
g_mutex_init(&ec->comp_data->surface_mutex);
TRACE_DS_END();
e_comp_wl_client_evas_deinit(ec);
- e_pixmap_cdata_set(ec->pixmap, NULL);
-
_e_surface_destroy(surface);
TRACE_DS_END();