forked from enlightenment/enlightenment
add code to handle setting surface opaque region
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
parent
fb9e9934cf
commit
5b2d5a58f6
|
@ -279,7 +279,43 @@ _e_comp_wl_surface_cb_frame(struct wl_client *client, struct wl_resource *resour
|
|||
static void
|
||||
_e_comp_wl_surface_cb_opaque_region_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, struct wl_resource *region_resource)
|
||||
{
|
||||
E_Pixmap *ep;
|
||||
uint64_t pixid;
|
||||
E_Client *ec;
|
||||
|
||||
DBG("Surface Opaque Region Set: %d", wl_resource_get_id(resource));
|
||||
|
||||
/* get the e_pixmap reference */
|
||||
if (!(ep = wl_resource_get_user_data(resource))) return;
|
||||
|
||||
/* try to find the associated e_client */
|
||||
if (!(ec = e_pixmap_client_get(ep)))
|
||||
{
|
||||
if (!(ec = e_pixmap_find_client(E_PIXMAP_TYPE_WL, pixid)))
|
||||
{
|
||||
ERR("\tCould not find client from pixmap %llu", pixid);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* trap for clients which are being deleted */
|
||||
if (e_object_is_del(E_OBJECT(ec))) return;
|
||||
|
||||
if (region_resource)
|
||||
{
|
||||
Eina_Tiler *tmp;
|
||||
|
||||
if (!(tmp = wl_resource_get_user_data(region_resource)))
|
||||
return;
|
||||
|
||||
eina_tiler_union(ec->comp_data->pending.opaque, tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
eina_tiler_clear(ec->comp_data->pending.opaque);
|
||||
eina_tiler_rect_add(ec->comp_data->pending.opaque,
|
||||
&(Eina_Rectangle){0, 0, ec->client.w, ec->client.h});
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue