From: Changyeon Lee Date: Mon, 19 Nov 2018 02:21:31 +0000 (+0900) Subject: surface_queue: add tbm_surface_queue_get_acquirable_surfaces X-Git-Tag: submit/tizen_5.0/20181119.115322~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F85%2F193285%2F1;p=platform%2Fcore%2Fuifw%2Flibtbm.git surface_queue: add tbm_surface_queue_get_acquirable_surfaces Change-Id: I62f653c370130d04e727e920dac7b1c0122d2d89 --- 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 @@ -1954,6 +1954,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; +} + 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)