surface_queue: remove need_attach interface of sequence and default 16/207616/2
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 4 Jun 2019 07:21:48 +0000 (16:21 +0900)
committerchangyeon lee <cyeon.lee@samsung.com>
Tue, 11 Jun 2019 08:35:54 +0000 (08:35 +0000)
Change-Id: Ib1c9bde06a4050f191ef8ffee56d0f9597f8a5b9

src/tbm_surface_queue.c

index 8a51971..b6c2e86 100644 (file)
@@ -531,6 +531,34 @@ _tbm_surface_queue_attach(tbm_surface_queue_h surface_queue,
 }
 
 static void
+_tbm_surface_queue_need_attach(tbm_surface_queue_h surface_queue)
+{
+       tbm_surface_h surface;
+
+       if (surface_queue->queue_size == surface_queue->num_attached)
+               return;
+
+       if (surface_queue->alloc_cb) {
+               surface = surface_queue->alloc_cb(surface_queue, surface_queue->alloc_cb_data);
+
+               /* silent return */
+               if (!surface)
+                       return;
+
+               tbm_surface_internal_ref(surface);
+       } else {
+               surface = tbm_surface_internal_create_with_flags(surface_queue->width,
+                               surface_queue->height,
+                               surface_queue->format,
+                               surface_queue->flags);
+               TBM_RETURN_IF_FAIL(surface != NULL);
+       }
+
+       _tbm_surface_queue_attach(surface_queue, surface);
+       tbm_surface_internal_unref(surface);
+}
+
+static void
 _tbm_surface_queue_detach(tbm_surface_queue_h surface_queue,
                          tbm_surface_h surface)
 {
@@ -1280,6 +1308,8 @@ tbm_surface_queue_dequeue(tbm_surface_queue_h
        if (_queue_is_empty(&surface_queue->free_queue)) {
                if (surface_queue->impl && surface_queue->impl->need_attach)
                        surface_queue->impl->need_attach(surface_queue);
+               else
+                       _tbm_surface_queue_need_attach(surface_queue);
        }
 
        if (surface_queue->impl && surface_queue->impl->dequeue)
@@ -1340,6 +1370,8 @@ tbm_surface_queue_can_dequeue_wait_timeout(tbm_surface_queue_h surface_queue, in
        if (_queue_is_empty(&surface_queue->free_queue)) {
                if (surface_queue->impl && surface_queue->impl->need_attach)
                        surface_queue->impl->need_attach(surface_queue);
+               else
+                       _tbm_surface_queue_need_attach(surface_queue);
        }
 
        if (!_queue_is_empty(&surface_queue->free_queue)) {
@@ -1402,6 +1434,8 @@ tbm_surface_queue_can_dequeue(tbm_surface_queue_h surface_queue, int wait)
        if (_queue_is_empty(&surface_queue->free_queue)) {
                if (surface_queue->impl && surface_queue->impl->need_attach)
                        surface_queue->impl->need_attach(surface_queue);
+               else
+                       _tbm_surface_queue_need_attach(surface_queue);
        }
 
        if (!_queue_is_empty(&surface_queue->free_queue)) {
@@ -2093,39 +2127,11 @@ tbm_surface_queue_get_trace_surface_num(
        return TBM_SURFACE_QUEUE_ERROR_NONE;
 }
 
-static void
-__tbm_queue_default_need_attach(tbm_surface_queue_h surface_queue)
-{
-       tbm_surface_h surface;
-
-       if (surface_queue->queue_size == surface_queue->num_attached)
-               return;
-
-       if (surface_queue->alloc_cb) {
-               surface = surface_queue->alloc_cb(surface_queue, surface_queue->alloc_cb_data);
-
-               /* silent return */
-               if (!surface)
-                       return;
-
-               tbm_surface_internal_ref(surface);
-       } else {
-               surface = tbm_surface_internal_create_with_flags(surface_queue->width,
-                               surface_queue->height,
-                               surface_queue->format,
-                               surface_queue->flags);
-               TBM_RETURN_IF_FAIL(surface != NULL);
-       }
-
-       _tbm_surface_queue_attach(surface_queue, surface);
-       tbm_surface_internal_unref(surface);
-}
-
 static const tbm_surface_queue_interface tbm_queue_default_impl = {
        NULL,                           /*__tbm_queue_default_init*/
        NULL,                           /*__tbm_queue_default_reset*/
        NULL,                           /*__tbm_queue_default_destroy*/
-       __tbm_queue_default_need_attach,
+       NULL,                           /*__tbm_queue_default_need_attach*/
        NULL,                           /*__tbm_queue_default_enqueue*/
        NULL,                           /*__tbm_queue_default_release*/
        NULL,                           /*__tbm_queue_default_dequeue*/
@@ -2196,34 +2202,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_surface_h surface;
-
-       if (surface_queue->queue_size == surface_queue->num_attached)
-               return;
-
-       if (surface_queue->alloc_cb) {
-               surface = surface_queue->alloc_cb(surface_queue, surface_queue->alloc_cb_data);
-
-               /* silent return */
-               if (!surface)
-                       return;
-
-               tbm_surface_internal_ref(surface);
-       } else {
-               surface = tbm_surface_internal_create_with_flags(surface_queue->width,
-                               surface_queue->height,
-                               surface_queue->format,
-                               surface_queue->flags);
-               TBM_RETURN_IF_FAIL(surface != NULL);
-       }
-
-       _tbm_surface_queue_attach(surface_queue, surface);
-       tbm_surface_internal_unref(surface);
-}
-
-static void
 __tbm_queue_sequence_enqueue(tbm_surface_queue_h surface_queue,
                             queue_node *node)
 {
@@ -2275,7 +2253,7 @@ static const tbm_surface_queue_interface tbm_queue_sequence_impl = {
        __tbm_queue_sequence_init,
        __tbm_queue_sequence_reset,
        __tbm_queue_sequence_destroy,
-       __tbm_queue_sequence_need_attach,
+       NULL,
        __tbm_queue_sequence_enqueue,
        __tbm_queue_sequence_release,
        __tbm_queue_sequence_dequeue,