buffer: Add ds_buffer_get_resource API 39/279839/1
authorJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 12 Aug 2022 08:09:21 +0000 (17:09 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 18 Aug 2022 08:27:10 +0000 (17:27 +0900)
Change-Id: I31908a439eb438dfd99221618742174f1872e44f
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
include/libds/buffer.h
include/libds/interfaces/buffer.h
src/buffer.c
src/client_buffer/shm_client_buffer.c

index b3d38fa..3c0efad 100644 (file)
@@ -78,6 +78,9 @@ void
 ds_buffer_register_resource_interface(
         const struct ds_buffer_resource_interface *iface);
 
+struct wl_resource *
+ds_buffer_get_resource(struct ds_buffer *buffer);
+
 #ifdef __cplusplus
 }
 #endif
index 3e288aa..fd43ef7 100644 (file)
@@ -18,6 +18,7 @@ struct ds_buffer_interface
     bool (*begin_data_ptr_access)(struct ds_buffer *buffer, uint32_t flags,
             void **data, uint32_t *format, size_t *stride);
     void (*end_data_ptr_access)(struct ds_buffer *buffer);
+    struct wl_resource *(*get_resource)(struct ds_buffer *buffer);
 };
 
 struct ds_buffer
index 86e7211..4571679 100644 (file)
@@ -174,6 +174,15 @@ ds_buffer_register_resource_interface(
     *iface_ptr = iface;
 }
 
+WL_EXPORT struct wl_resource *
+ds_buffer_get_resource(struct ds_buffer *buffer)
+{
+    if (!buffer->iface->get_resource)
+        return NULL;
+
+    return buffer->iface->get_resource(buffer);
+}
+
 static void
 buffer_consider_destroy(struct ds_buffer *buffer)
 {
index 6d52fb9..fa2f2a8 100644 (file)
@@ -101,11 +101,23 @@ shm_client_buffer_end_data_ptr_access(struct ds_buffer *ds_buffer)
         wl_shm_buffer_end_access(buffer->shm_buffer);
 }
 
+static struct wl_resource *
+shm_client_buffer_get_resource(struct ds_buffer *ds_buffer)
+{
+    struct ds_shm_client_buffer *buffer;
+
+    buffer = shm_client_buffer_from_buffer(ds_buffer);
+
+    return buffer->resource;
+}
+
+struct ds_shm_client_buffer *buffer;
 static const struct ds_buffer_interface shm_client_buffer_iface =
 {
     .destroy = shm_client_buffer_destroy,
     .begin_data_ptr_access = shm_client_buffer_begin_data_ptr_access,
     .end_data_ptr_access = shm_client_buffer_end_data_ptr_access,
+    .get_resource = shm_client_buffer_get_resource,
 };
 
 static void