add set_buffer_serial request 90/186990/1
authorJuyeon Lee <juyeonne.lee@samsung.com>
Fri, 17 Aug 2018 05:06:39 +0000 (14:06 +0900)
committerJuyeon Lee <juyeonne.lee@samsung.com>
Fri, 17 Aug 2018 05:08:24 +0000 (14:08 +0900)
egl would save serial num using this protocol for every buffer commit

Change-Id: Ic78cd39290f6946ac2bd00d68f8c9a95faf83333

protocol/wayland-tbm.xml
src/wayland-tbm-client.c
src/wayland-tbm-client.h
src/wayland-tbm-server.c
src/wayland-tbm-server.h

index 123770b..16f2079 100644 (file)
       <arg name="transform" type="int"/>
     </request>
 
+    <request name="set_buffer_serial">
+      <arg name="buffer" type="object" interface="wl_buffer"/>
+      <arg name="serial" type="uint"/>
+    </request>
+
     <request name="destroy" type="destructor">
     </request>
 
index f3687db..0408e0e 100644 (file)
@@ -816,6 +816,16 @@ wayland_tbm_client_set_buffer_transform(struct wayland_tbm_client *tbm_client,
        wl_tbm_set_buffer_transform(tbm_client->wl_tbm, wl_buffer, transform);
 }
 
+void
+wayland_tbm_client_set_buffer_serial(struct wayland_tbm_client *tbm_client,
+                                                               struct wl_buffer *wl_buffer, uint32_t serial)
+{
+       WL_TBM_RETURN_IF_FAIL(tbm_client != NULL);
+       WL_TBM_RETURN_IF_FAIL(wl_buffer != NULL);
+
+       wl_tbm_set_buffer_serial(tbm_client->wl_tbm, wl_buffer, serial);
+}
+
 void *
 wayland_tbm_client_get_bufmgr(struct wayland_tbm_client *tbm_client)
 {
index 76d41f1..b68a65f 100644 (file)
@@ -62,6 +62,9 @@ wayland_tbm_client_set_sync_timeline(struct wayland_tbm_client *tbm_client,
 void
 wayland_tbm_client_set_buffer_transform(struct wayland_tbm_client *tbm_client,
                                                                struct wl_buffer *buffer, int transform);
+void
+wayland_tbm_client_set_buffer_serial(struct wayland_tbm_client *tbm_client,
+                                                               struct wl_buffer *buffer, uint32_t serial);
 
 void *
 wayland_tbm_client_get_bufmgr(struct wayland_tbm_client *tbm_client);
index a423e22..3d7569b 100644 (file)
@@ -74,6 +74,7 @@ struct wayland_tbm_buffer {
 
        tbm_fd sync_timeline;
        int transform;
+       uint32_t serial;
 };
 
 struct wayland_tbm_client_resource {
@@ -587,6 +588,26 @@ _wayland_tbm_server_impl_set_buffer_transform(struct wl_client *client,
 }
 
 static void
+_wayland_tbm_server_impl_set_buffer_serial(struct wl_client *client,
+               struct wl_resource *wl_tbm,
+               struct wl_resource *wl_buffer,
+               uint32_t serial)
+{
+       WL_TBM_RETURN_IF_FAIL(wl_buffer != NULL);
+
+       if (wl_resource_instance_of(wl_buffer, &wl_buffer_interface,
+                                   &_wayland_tbm_buffer_impementation)) {
+               struct wayland_tbm_buffer *tbm_buffer;
+
+               tbm_buffer = (struct wayland_tbm_buffer *)
+                                       wl_resource_get_user_data(wl_buffer);
+               WL_TBM_RETURN_IF_FAIL(tbm_buffer != NULL);
+
+               tbm_buffer->serial = serial;
+       }
+}
+
+static void
 _wayland_tbm_server_impl_destroy(struct wl_client *client,
                                struct wl_resource *wl_tbm)
 {
@@ -599,6 +620,7 @@ static const struct wl_tbm_interface _wayland_tbm_server_implementation = {
        _wayland_tbm_server_impl_create_surface_queue,
        _wayland_tbm_server_impl_set_sync_timeline,
        _wayland_tbm_server_impl_set_buffer_transform,
+       _wayland_tbm_server_impl_set_buffer_serial,
        _wayland_tbm_server_impl_destroy
 };
 
@@ -1151,6 +1173,25 @@ wayland_tbm_server_buffer_get_buffer_transform(struct wayland_tbm_server *tbm_sr
        return 0;
 }
 
+uint32_t
+wayland_tbm_server_buffer_get_buffer_serial(struct wl_resource *wl_buffer)
+{
+       WL_TBM_RETURN_VAL_IF_FAIL(wl_buffer != NULL, 0);
+
+       if (wl_resource_instance_of(wl_buffer, &wl_buffer_interface,
+                                   &_wayland_tbm_buffer_impementation)) {
+               struct wayland_tbm_buffer *tbm_buffer;
+
+               tbm_buffer = (struct wayland_tbm_buffer *)
+                                       wl_resource_get_user_data(wl_buffer);
+               WL_TBM_RETURN_VAL_IF_FAIL(tbm_buffer != NULL, 0);
+
+               return tbm_buffer->serial;
+       }
+
+       return 0;
+}
+
 int
 wayland_tbm_server_send_destroy_buffer(struct wl_resource *wl_tbm,
                               struct wl_resource *wl_buffer)
@@ -1161,4 +1202,4 @@ wayland_tbm_server_send_destroy_buffer(struct wl_resource *wl_tbm,
        wl_tbm_send_destroy_buffer(wl_tbm, wl_buffer);
 
        return 1;
-}
\ No newline at end of file
+}
index f89e232..fad8e0b 100644 (file)
@@ -118,6 +118,9 @@ int
 wayland_tbm_server_buffer_get_buffer_transform(struct wayland_tbm_server *tbm_srv,
                               struct wl_resource *wl_buffer);
 
+uint32_t
+wayland_tbm_server_buffer_get_buffer_serial(struct wl_resource *wl_buffer);
+
 int
 wayland_tbm_server_send_destroy_buffer(struct wl_resource *wl_tbm,
                               struct wl_resource *wl_buffer);