client: set width,height,format of buffer to wayland_tbm_buffer 31/193531/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Wed, 21 Nov 2018 03:51:15 +0000 (12:51 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Wed, 21 Nov 2018 10:50:07 +0000 (19:50 +0900)
Change-Id: I9007b4c707ee32fbe0b97736cda991e8a4e20834

src/wayland-tbm-client.c

index 889f8d4..8d0db95 100644 (file)
@@ -65,6 +65,10 @@ struct wayland_tbm_buffer {
        int reuse;
        int usable;
 
+       int width;
+       int height;
+       int format;
+
        struct wl_tbm_queue *wl_tbm_queue;
        struct wl_list link;
 };
@@ -1000,15 +1004,9 @@ static int
 _wayland_tbm_client_is_valid_attach_bufs(struct wayland_tbm_surface_queue *queue_info,
         struct wayland_tbm_buffer *buffer)
 {
-       int width, height, format;
-
-       width = tbm_surface_get_width(buffer->tbm_surface);
-       height = tbm_surface_get_height(buffer->tbm_surface);
-       format = tbm_surface_get_format(buffer->tbm_surface);
-
-       if (queue_info->width != width ||
-               queue_info->height != height ||
-               queue_info->format != format)
+       if (queue_info->width != buffer->width ||
+               queue_info->height != buffer->height ||
+               queue_info->format != buffer->format)
                return 0;
 
        return 1;
@@ -1115,8 +1113,6 @@ handle_tbm_queue_buffer_attached(void *data,
 
        WL_TBM_RETURN_IF_FAIL(wl_buffer != NULL);
 
-       pthread_mutex_lock(&queue_info->lock);
-
        buffer = calloc(1, sizeof(struct wayland_tbm_buffer));
        WL_TBM_GOTO_IF_FAIL(buffer != NULL, fail_alloc);
 
@@ -1130,6 +1126,11 @@ handle_tbm_queue_buffer_attached(void *data,
        WL_TBM_GOTO_IF_FAIL(buffer->tbm_surface != NULL, fail_get_data);
        buffer->flags = flags;
 
+       buffer->width = tbm_surface_get_width(buffer->tbm_surface);
+       buffer->height = tbm_surface_get_height(buffer->tbm_surface);
+       buffer->format = tbm_surface_get_format(buffer->tbm_surface);
+
+       pthread_mutex_lock(&queue_info->lock);
        wl_list_insert(&queue_info->attach_bufs, &buffer->link);
        pthread_mutex_unlock(&queue_info->lock);
 
@@ -1143,7 +1144,6 @@ handle_tbm_queue_buffer_attached(void *data,
 fail_get_data:
        free(buffer);
 fail_alloc:
-       pthread_mutex_unlock(&queue_info->lock);
        wl_buffer_destroy(wl_buffer);
 }