surface_queue: move flags from impl_data to surface_queue 15/207615/2
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 4 Jun 2019 06:52:10 +0000 (15:52 +0900)
committerchangyeon lee <cyeon.lee@samsung.com>
Tue, 11 Jun 2019 08:35:37 +0000 (08:35 +0000)
Change-Id: I7c8f54cd96a849df89408decf494c84c943313aa

src/tbm_surface_queue.c

index b8e85ee..8a51971 100644 (file)
@@ -120,6 +120,7 @@ struct _tbm_surface_queue {
        int height;
        int format;
        int queue_size;
+       int flags;
        int num_attached;
 
        queue free_queue;
@@ -589,7 +590,7 @@ _tbm_surface_queue_release(tbm_surface_queue_h surface_queue,
 static void
 _tbm_surface_queue_init(tbm_surface_queue_h surface_queue,
                        int queue_size,
-                       int width, int height, int format,
+                       int width, int height, int format, int flags,
                        const tbm_surface_queue_interface *impl, void *data)
 {
        pthread_condattr_t free_attr, dirty_attr;
@@ -616,6 +617,7 @@ _tbm_surface_queue_init(tbm_surface_queue_h surface_queue,
        surface_queue->width = width;
        surface_queue->height = height;
        surface_queue->format = format;
+       surface_queue->flags = flags;
        surface_queue->impl = impl;
        surface_queue->impl_data = data;
        surface_queue->modes = TBM_SURFACE_QUEUE_MODE_NONE;
@@ -2091,20 +2093,9 @@ tbm_surface_queue_get_trace_surface_num(
        return TBM_SURFACE_QUEUE_ERROR_NONE;
 }
 
-typedef struct {
-       int flags;
-} tbm_queue_default;
-
-static void
-__tbm_queue_default_destroy(tbm_surface_queue_h surface_queue)
-{
-       free(surface_queue->impl_data);
-}
-
 static void
 __tbm_queue_default_need_attach(tbm_surface_queue_h surface_queue)
 {
-       tbm_queue_default *data = (tbm_queue_default *)surface_queue->impl_data;
        tbm_surface_h surface;
 
        if (surface_queue->queue_size == surface_queue->num_attached)
@@ -2122,7 +2113,7 @@ __tbm_queue_default_need_attach(tbm_surface_queue_h surface_queue)
                surface = tbm_surface_internal_create_with_flags(surface_queue->width,
                                surface_queue->height,
                                surface_queue->format,
-                               data->flags);
+                               surface_queue->flags);
                TBM_RETURN_IF_FAIL(surface != NULL);
        }
 
@@ -2133,7 +2124,7 @@ __tbm_queue_default_need_attach(tbm_surface_queue_h surface_queue)
 static const tbm_surface_queue_interface tbm_queue_default_impl = {
        NULL,                           /*__tbm_queue_default_init*/
        NULL,                           /*__tbm_queue_default_reset*/
-       __tbm_queue_default_destroy,
+       NULL,                           /*__tbm_queue_default_destroy*/
        __tbm_queue_default_need_attach,
        NULL,                           /*__tbm_queue_default_enqueue*/
        NULL,                           /*__tbm_queue_default_release*/
@@ -2165,21 +2156,10 @@ tbm_surface_queue_create(int queue_size, int width,
 
        TBM_TRACE_SURFACE_QUEUE("tbm_surface_queue(%p)\n", surface_queue);
 
-       tbm_queue_default *data = (tbm_queue_default *) calloc(1,
-                                 sizeof(tbm_queue_default));
-       if (data == NULL) {
-               TBM_ERR("cannot allocate the tbm_queue_default.\n");
-               _tbm_set_last_result(TBM_ERROR_OUT_OF_MEMORY);
-               free(surface_queue);
-               _tbm_surf_queue_mutex_unlock();
-               return NULL;
-       }
-
-       data->flags = flags;
        _tbm_surface_queue_init(surface_queue,
                                queue_size,
-                               width, height, format,
-                               &tbm_queue_default_impl, data);
+                               width, height, format, flags,
+                               &tbm_queue_default_impl, NULL);
 
        _tbm_surf_queue_mutex_unlock();
 
@@ -2187,7 +2167,6 @@ tbm_surface_queue_create(int queue_size, int width,
 }
 
 typedef struct {
-       int flags;
        queue dequeue_list;
 } tbm_queue_sequence;
 
@@ -2219,7 +2198,6 @@ __tbm_queue_sequence_destroy(tbm_surface_queue_h surface_queue)
 static void
 __tbm_queue_sequence_need_attach(tbm_surface_queue_h surface_queue)
 {
-       tbm_queue_sequence *data = (tbm_queue_sequence *)surface_queue->impl_data;
        tbm_surface_h surface;
 
        if (surface_queue->queue_size == surface_queue->num_attached)
@@ -2237,7 +2215,7 @@ __tbm_queue_sequence_need_attach(tbm_surface_queue_h surface_queue)
                surface = tbm_surface_internal_create_with_flags(surface_queue->width,
                                surface_queue->height,
                                surface_queue->format,
-                               data->flags);
+                               surface_queue->flags);
                TBM_RETURN_IF_FAIL(surface != NULL);
        }
 
@@ -2338,10 +2316,9 @@ tbm_surface_queue_sequence_create(int queue_size, int width,
                return NULL;
        }
 
-       data->flags = flags;
        _tbm_surface_queue_init(surface_queue,
                                queue_size,
-                               width, height, format,
+                               width, height, format, flags,
                                &tbm_queue_sequence_impl, data);
 
        _tbm_surf_queue_mutex_unlock();