surface: Export functions for surface role 01/278101/1
authorSeunghun Lee <shiin.lee@samsung.com>
Mon, 23 May 2022 07:50:58 +0000 (16:50 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Mon, 18 Jul 2022 05:08:52 +0000 (14:08 +0900)
This patch exports functions of ds_surface for the compositor to
be able to assign a role to ds_surfaces.

Change-Id: I8f79bb2a97de290ed304336408d258d91a7c3abc

include/libds/surface.h
src/surface.h
src/surface/surface.c

index 9c26cea..3d014dc 100644 (file)
@@ -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
index 008fb9c..c1cc358 100644 (file)
@@ -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);
 
index 78dc41c..2acb38b 100644 (file)
@@ -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)