send queue size and need flush in active event 80/92480/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Thu, 29 Sep 2016 04:27:44 +0000 (13:27 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Mon, 17 Oct 2016 06:49:26 +0000 (15:49 +0900)
Change-Id: If297aa2a214bde5fd09996ff8673117f16b44dd9

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

index d7a362a..14c3c66 100644 (file)
 
     <event name="active">
       <arg name="usage" type="uint"/>
+      <arg name="queue_size" type="uint"/>
+      <arg name="need_flush" type="uint"/>
     </event>
 
     <event name="deactive"/>
index 240c875..52b3ee6 100644 (file)
@@ -79,6 +79,7 @@ struct wayland_tbm_surface_queue {
        int format;
        int flag;
        uint num_bufs;
+       uint queue_size;
        struct wl_surface *wl_surface;
 
        int is_active;
@@ -669,7 +670,7 @@ _wayland_tbm_client_surface_queue_flush(struct wayland_tbm_surface_queue *queue_
        WL_TBM_TRACE("pid:%d\n", getpid());
 #endif
        _wayland_tbm_client_queue_destory_attach_bufs(queue_info);
-       tbm_surface_queue_flush(queue_info->tbm_queue);
+       tbm_surface_queue_set_size(queue_info->tbm_queue, queue_info->queue_size, 1);
 }
 
 static tbm_surface_h
@@ -877,7 +878,9 @@ fail:
 static void
 handle_tbm_queue_active(void *data,
                        struct wl_tbm_queue *wl_tbm_queue,
-                       uint32_t usage)
+                       uint32_t usage,
+                       uint32_t queue_size,
+                       uint32_t need_flush)
 {
        struct wayland_tbm_surface_queue *queue_info = data;
 
@@ -893,7 +896,7 @@ handle_tbm_queue_active(void *data,
        queue_info->usage = usage;
 
        /* flush the allocated surfaces at the client */
-       tbm_surface_queue_flush(queue_info->tbm_queue);
+       tbm_surface_queue_set_size(queue_info->tbm_queue, queue_size, need_flush);
 }
 
 static void
@@ -1024,6 +1027,7 @@ wayland_tbm_client_create_surface_queue(struct wayland_tbm_client *tbm_client,
        queue_info->height = height;
        queue_info->format = format;
        queue_info->flag = 0;
+       queue_info->queue_size = queue_size;
 
        queue_info->tbm_queue = tbm_surface_queue_sequence_create(queue_size,
                                width, height, format, 0);
index 3b0d351..dce43a8 100644 (file)
@@ -1059,7 +1059,8 @@ wayland_tbm_server_client_queue_get(struct wayland_tbm_server *tbm_srv, struct w
 }
 
 void
-wayland_tbm_server_client_queue_activate(struct wayland_tbm_client_queue *cqueue, uint32_t usage)
+wayland_tbm_server_client_queue_activate(struct wayland_tbm_client_queue *cqueue,
+                       uint32_t usage, uint32_t queue_size, uint32_t need_flush)
 {
        WL_TBM_RETURN_IF_FAIL(cqueue != NULL);
        WL_TBM_RETURN_IF_FAIL(cqueue->wl_tbm_queue != NULL);
@@ -1067,7 +1068,7 @@ wayland_tbm_server_client_queue_activate(struct wayland_tbm_client_queue *cqueue
 #ifdef DEBUG_TRACE
        WL_TBM_TRACE("      pid:%d\n", cqueue->pid);
 #endif
-       wl_tbm_queue_send_active(cqueue->wl_tbm_queue, usage);
+       wl_tbm_queue_send_active(cqueue->wl_tbm_queue, usage, queue_size, 1);
 }
 
 void
index f3bd2eb..d3a66d0 100644 (file)
@@ -79,7 +79,7 @@ wayland_tbm_server_client_queue_get(struct wayland_tbm_server *tbm_srv,
 
 void
 wayland_tbm_server_client_queue_activate(struct wayland_tbm_client_queue *client_queue,
-                                       uint32_t usage);
+                                       uint32_t usage, uint32_t queue_size, uint32_t need_flush);
 
 void
 wayland_tbm_server_client_queue_deactivate(struct wayland_tbm_client_queue *client_queue);