From af7fedf30298649d5fdec163b1fdb2d395afa925 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Mon, 19 Nov 2018 11:21:31 +0900 Subject: [PATCH] surface_queue: add tbm_surface_queue_get_acquirable_surfaces Change-Id: I62f653c370130d04e727e920dac7b1c0122d2d89 --- include/tbm_surface_queue.h | 4 ++++ src/tbm_surface_queue.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/include/tbm_surface_queue.h b/include/tbm_surface_queue.h index 2534f7f..33c500c 100644 --- a/include/tbm_surface_queue.h +++ b/include/tbm_surface_queue.h @@ -265,6 +265,10 @@ tbm_surface_queue_error_e tbm_surface_queue_get_surfaces( tbm_surface_queue_h surface_queue, tbm_surface_h *surfaces, int *num); +tbm_surface_queue_error_e tbm_surface_queue_get_acquirable_surfaces( + tbm_surface_queue_h surface_queue, + tbm_surface_h *surfaces, int *num); + /** * @brief Gets number of the tbm_surfaces by tbm_surface_queue_trace. * diff --git a/src/tbm_surface_queue.c b/src/tbm_surface_queue.c index 9fc33a5..28acf5a 100644 --- a/src/tbm_surface_queue.c +++ b/src/tbm_surface_queue.c @@ -1955,6 +1955,37 @@ tbm_surface_queue_get_surfaces(tbm_surface_queue_h surface_queue, } 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; +} + +tbm_surface_queue_error_e tbm_surface_queue_get_trace_surface_num( tbm_surface_queue_h surface_queue, tbm_surface_queue_trace trace, int *num) { -- 2.7.4