add set_buffer_transform function 35/135535/1
authorBoram Park <boram1288.park@samsung.com>
Thu, 22 Jun 2017 00:49:47 +0000 (09:49 +0900)
committerBoram Park <boram1288.park@samsung.com>
Thu, 22 Jun 2017 00:49:47 +0000 (09:49 +0900)
Change-Id: I257b626c22c4845414f963e2ca06beca703c4385

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 0ae4479..ab3fa3e 100644 (file)
       <arg name="timeline" type="fd"/>
     </request>
 
+    <request name="set_buffer_transform">
+      <arg name="buffer" type="object" interface="wl_buffer"/>
+      <arg name="transform" type="int"/>
+    </request>
+
     <request name="destroy" type="destructor">
     </request>
+
   </interface>
 
   <interface name="wl_tbm_queue" version="1">
index 26b6b83..70c89a4 100644 (file)
@@ -662,6 +662,17 @@ wayland_tbm_client_set_sync_timeline(struct wayland_tbm_client *tbm_client,
        wl_tbm_set_sync_timeline(tbm_client->wl_tbm, wl_buffer, timeline);
 }
 
+void
+wayland_tbm_client_set_buffer_transform(struct wayland_tbm_client *tbm_client,
+                                                               struct wl_buffer *wl_buffer, int transform)
+{
+       WL_TBM_RETURN_IF_FAIL(tbm_client != NULL);
+       WL_TBM_RETURN_IF_FAIL(wl_buffer != NULL);
+       WL_TBM_RETURN_IF_FAIL(transform >= 0);
+
+       wl_tbm_set_buffer_transform(tbm_client->wl_tbm, wl_buffer, transform);
+}
+
 void *
 wayland_tbm_client_get_bufmgr(struct wayland_tbm_client *tbm_client)
 {
index b2c1633..b653f13 100644 (file)
@@ -59,6 +59,10 @@ void
 wayland_tbm_client_set_sync_timeline(struct wayland_tbm_client *tbm_client,
                                                                struct wl_buffer *buffer, tbm_fd timeline);
 
+void
+wayland_tbm_client_set_buffer_transform(struct wayland_tbm_client *tbm_client,
+                                                               struct wl_buffer *buffer, int transform);
+
 void *
 wayland_tbm_client_get_bufmgr(struct wayland_tbm_client *tbm_client);
 
index 387121e..590c0c8 100644 (file)
@@ -72,6 +72,7 @@ struct wayland_tbm_buffer {
        struct wl_list link_ref;        /*link to same tbm_surface_h*/
 
        tbm_fd sync_timeline;
+   int transform;
 };
 
 struct wayland_tbm_client_resource {
@@ -552,6 +553,26 @@ _wayland_tbm_server_impl_set_sync_timeline(struct wl_client *client,
 }
 
 static void
+_wayland_tbm_server_impl_set_buffer_transform(struct wl_client *client,
+               struct wl_resource *wl_tbm,
+               struct wl_resource *wl_buffer,
+               int32_t transform)
+{
+       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->transform = transform;
+       }
+}
+
+static void
 _wayland_tbm_server_impl_destroy(struct wl_client *client,
                                struct wl_resource *wl_tbm)
 {
@@ -563,6 +584,7 @@ static const struct wl_tbm_interface _wayland_tbm_server_implementation = {
        _wayland_tbm_server_impl_create_buffer_with_fd,
        _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_destroy
 };
 
@@ -1071,3 +1093,23 @@ wayland_tbm_server_buffer_has_sync_timeline(struct wayland_tbm_server *tbm_srv,
 
        return 0;
 }
+
+int
+wayland_tbm_server_buffer_get_buffer_transform(struct wayland_tbm_server *tbm_srv,
+                              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->transform;
+       }
+
+       return 0;
+}
index 1938a5d..d439ebd 100644 (file)
@@ -107,6 +107,10 @@ int
 wayland_tbm_server_buffer_has_sync_timeline(struct wayland_tbm_server *tbm_srv,
                               struct wl_resource *wl_buffer);
 
+int
+wayland_tbm_server_buffer_get_buffer_transform(struct wayland_tbm_server *tbm_srv,
+                              struct wl_resource *wl_buffer);
+
 #ifdef  __cplusplus
 }
 #endif