return surface->base.scaler.buffer_viewport.changed;
}
+EINTERN Eina_Bool
+e_surface_role_set(E_Surface *surface, const char *role_name, struct wl_resource *error_resource, uint32_t error_code)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(surface, EINA_FALSE);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(role_name, EINA_FALSE);
+
+ if ((surface->base.role_name == NULL) ||
+ (surface->base.role_name == role_name) ||
+ (strcmp(surface->base.role_name, role_name) == 0))
+ {
+ surface->base.role_name = role_name;
+ return EINA_TRUE;
+ }
+
+ if (error_resource)
+ {
+ wl_resource_post_error(error_resource, error_code,
+ "Cannot assign role %s to wl_surface@%d,"
+ " already has role %s\n",
+ role_name,
+ surface->base.wl_surface ?
+ wl_resource_get_id(surface->base.wl_surface) : -1,
+ surface->base.role_name);
+ }
+
+ return EINA_FALSE;
+}
+
EINTERN E_Subsurface *
e_subsurface_from_surface(E_Surface *surface)
{
EINTERN void e_surface_destroy_listener_add(E_Surface *surface, struct wl_listener *listener);
EINTERN void e_surface_parent_destroy_listener_add(E_Surface *surface, struct wl_listener *listener);
EINTERN struct wl_listener *e_surface_destroy_listener_get(E_Surface *surface, wl_notify_func_t notify);
+EINTERN Eina_Bool e_surface_role_set(E_Surface *surface, const char *role_name, struct wl_resource *error_resource, uint32_t error_code);
EINTERN struct wl_resource *e_surface_viewporter_resource_get(E_Surface *surface);
EINTERN Eina_Bool e_surface_viewporter_resource_set(E_Surface *surface, struct wl_resource *viewporter);
EINTERN void e_surface_viewporter_resource_unset(E_Surface *surface);