Revert "Remove tbm_surface_queue_get_acquirable_surfaces" 85/319785/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Mon, 10 Feb 2025 09:09:37 +0000 (18:09 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Mon, 10 Feb 2025 09:09:37 +0000 (18:09 +0900)
This reverts commit 04b0e853098173a76a3bdcb0c78577655e66a21c.

Change-Id: I5878d9e4e4c180a8ff0f378f5b55464ad6e659f7

include/tbm_surface_queue_internal.h
src/tbm_surface_queue.c

index 0e425f13c6387f72b8ab3561f8bfd1f1836d7124..3d9bb5d422ad626e38f2b37ad8c3ee438157ca9b 100644 (file)
@@ -94,6 +94,10 @@ tbm_surface_queue_error_e tbm_surface_queue_set_alloc_cb2(
        tbm_surface_free_cb free_cb,
        void *data);
 
+tbm_surface_queue_error_e tbm_surface_queue_get_acquirable_surfaces(
+       tbm_surface_queue_h surface_queue,
+       tbm_surface_h *surfaces, int *num);
+
 /**
  * @brief Sets size of the tbm_surface_queue.
  *
index c36783d670df53f63f56df2f186a315121f984a6..635a56b2679e60f29135482d9de119d72214a418 100644 (file)
@@ -2111,6 +2111,37 @@ tbm_surface_queue_get_surfaces(tbm_surface_queue_h surface_queue,
        return TBM_SURFACE_QUEUE_ERROR_NONE;
 }
 
+tbm_surface_queue_error_e
+tbm_surface_queue_get_acquirable_surfaces(tbm_surface_queue_h surface_queue,
+                       tbm_surface_h *surfaces, int *num)
+{
+       queue_node *node = NULL;
+
+       _tbm_surf_queue_mutex_lock();
+
+       *num = 0;
+
+       TBM_SURF_QUEUE_RETURN_VAL_IF_FAIL(_tbm_surface_queue_is_valid(surface_queue),
+                              TBM_SURFACE_QUEUE_ERROR_INVALID_QUEUE);
+       TBM_SURF_QUEUE_RETURN_VAL_IF_FAIL(num != NULL,
+                              TBM_ERROR_INVALID_PARAMETER);
+
+       pthread_mutex_lock(&surface_queue->lock);
+
+       LIST_FOR_EACH_ENTRY(node, &surface_queue->dirty_queue.head, item_link) {
+               if (surfaces)
+                       surfaces[*num] = node->surface;
+
+               *num = *num + 1;
+       }
+
+       pthread_mutex_unlock(&surface_queue->lock);
+
+       _tbm_surf_queue_mutex_unlock();
+
+       return TBM_SURFACE_QUEUE_ERROR_NONE;
+}
+
 static const tbm_surface_queue_interface tbm_queue_default_impl = {
        NULL,                           /*__tbm_queue_default_init*/
        NULL,                           /*__tbm_queue_default_reset*/