From: Seunghun Lee Date: Mon, 23 May 2022 07:50:58 +0000 (+0900) Subject: surface: Export functions for surface role X-Git-Tag: accepted/tizen/unified/20220718.140337~19 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=25af8372d76fc0783b944df9dc73f55c46479e4e;p=platform%2Fcore%2Fuifw%2Flibds.git surface: Export functions for surface role This patch exports functions of ds_surface for the compositor to be able to assign a role to ds_surfaces. Change-Id: I8f79bb2a97de290ed304336408d258d91a7c3abc --- diff --git a/include/libds/surface.h b/include/libds/surface.h index 9c26cea..3d014dc 100644 --- a/include/libds/surface.h +++ b/include/libds/surface.h @@ -12,6 +12,12 @@ extern "C" { struct ds_surface; +struct ds_surface_role +{ + const char *name; + void (*commit)(struct ds_surface *surface); +}; + typedef bool (*ds_surface_for_each_func_t)(struct ds_surface *surface, int sx, int sy, void *data); @@ -38,6 +44,23 @@ void ds_surface_send_frame_done(struct ds_surface *surface, const struct timespec *when); +struct ds_surface * +ds_surface_from_resource(struct wl_resource *resource); + +bool +ds_surface_set_role(struct ds_surface *surface, + const struct ds_surface_role *role, void *role_data, + struct wl_resource *error_resource, uint32_t error_code); + +const struct ds_surface_role * +ds_surface_get_role(struct ds_surface *surface); + +void * +ds_surface_get_role_data(struct ds_surface *surface); + +void +ds_surface_reset_role_data(struct ds_surface *surface); + #ifdef __cplusplus } #endif diff --git a/src/surface.h b/src/surface.h index 008fb9c..c1cc358 100644 --- a/src/surface.h +++ b/src/surface.h @@ -5,32 +5,9 @@ #include "libds/surface.h" -struct ds_surface_role -{ - const char *name; - void (*commit)(struct ds_surface *surface); -}; - struct ds_surface * ds_surface_create(struct wl_client *client, uint32_t version, uint32_t id); -struct ds_surface * -ds_surface_from_resource(struct wl_resource *resource); - -bool -ds_surface_set_role(struct ds_surface *surface, - const struct ds_surface_role *role, void *role_data, - struct wl_resource *error_resource, uint32_t error_code); - -const struct ds_surface_role * -ds_surface_get_role(struct ds_surface *surface); - -void * -ds_surface_get_role_data(struct ds_surface *surface); - -void -ds_surface_reset_role_data(struct ds_surface *surface); - bool ds_surface_has_buffer(struct ds_surface *surface); diff --git a/src/surface/surface.c b/src/surface/surface.c index 78dc41c..2acb38b 100644 --- a/src/surface/surface.c +++ b/src/surface/surface.c @@ -70,45 +70,7 @@ ds_surface_send_frame_done(struct ds_surface *surface, } } -struct ds_surface * -ds_surface_create(struct wl_client *client, uint32_t version, uint32_t id) -{ - struct ds_surface *surface; - - surface = calloc(1, sizeof *surface); - if (!surface) { - wl_client_post_no_memory(client); - return NULL; - } - - surface->resource = - wl_resource_create(client, &wl_surface_interface, version, id); - if (!surface->resource) { - free(surface); - wl_client_post_no_memory(client); - return NULL; - } - - wl_resource_set_implementation(surface->resource, &surface_impl, - surface, surface_handle_resource_destroy); - - surface_state_init(&surface->current); - surface_state_init(&surface->pending); - - wl_signal_init(&surface->events.commit); - wl_signal_init(&surface->events.destroy); - wl_signal_init(&surface->events.new_subsurface); - - pixman_region32_init(&surface->buffer_damage); - pixman_region32_init(&surface->opaque_region); - pixman_region32_init(&surface->input_region); - - ds_inf("New ds_surface %p (res %p)", surface, surface->resource); - - return surface; -} - -struct ds_surface * +WL_EXPORT struct ds_surface * ds_surface_from_resource(struct wl_resource *resource) { assert(wl_resource_instance_of(resource, &wl_surface_interface, @@ -116,7 +78,7 @@ ds_surface_from_resource(struct wl_resource *resource) return wl_resource_get_user_data(resource); } -bool +WL_EXPORT bool ds_surface_set_role(struct ds_surface *surface, const struct ds_surface_role *role, void *role_data, struct wl_resource *error_resource, uint32_t error_code) @@ -155,24 +117,62 @@ ds_surface_set_role(struct ds_surface *surface, return true; } -const struct ds_surface_role * +WL_EXPORT const struct ds_surface_role * ds_surface_get_role(struct ds_surface *surface) { return surface->role; } -void * +WL_EXPORT void * ds_surface_get_role_data(struct ds_surface *surface) { return surface->role_data; } -void +WL_EXPORT void ds_surface_reset_role_data(struct ds_surface *surface) { surface->role_data = NULL; } +struct ds_surface * +ds_surface_create(struct wl_client *client, uint32_t version, uint32_t id) +{ + struct ds_surface *surface; + + surface = calloc(1, sizeof *surface); + if (!surface) { + wl_client_post_no_memory(client); + return NULL; + } + + surface->resource = + wl_resource_create(client, &wl_surface_interface, version, id); + if (!surface->resource) { + free(surface); + wl_client_post_no_memory(client); + return NULL; + } + + wl_resource_set_implementation(surface->resource, &surface_impl, + surface, surface_handle_resource_destroy); + + surface_state_init(&surface->current); + surface_state_init(&surface->pending); + + wl_signal_init(&surface->events.commit); + wl_signal_init(&surface->events.destroy); + wl_signal_init(&surface->events.new_subsurface); + + pixman_region32_init(&surface->buffer_damage); + pixman_region32_init(&surface->opaque_region); + pixman_region32_init(&surface->input_region); + + ds_inf("New ds_surface %p (res %p)", surface, surface->resource); + + return surface; +} + bool ds_surface_is_ancestor_of(struct ds_surface *surface, struct ds_surface *target_surface)