From: Sangjin Lee Date: Fri, 10 Jun 2016 10:38:38 +0000 (+0900) Subject: tbm_surface_queue: add a function for get buffers X-Git-Tag: submit/tizen/20160614.113418~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F12%2F74012%2F4;p=platform%2Fcore%2Fuifw%2Flibtbm.git tbm_surface_queue: add a function for get buffers This function just query tbm_surfaces in a tbm_surface_queue. Change-Id: I0199af904a9a0feccc182d4d433baf455065087c --- diff --git a/src/tbm_surface_queue.c b/src/tbm_surface_queue.c index cf6a1fe..cfb3f1a 100644 --- a/src/tbm_surface_queue.c +++ b/src/tbm_surface_queue.c @@ -955,6 +955,33 @@ tbm_surface_queue_flush(tbm_surface_queue_h surface_queue) return TBM_SURFACE_QUEUE_ERROR_NONE; } +tbm_surface_queue_error_e +tbm_surface_queue_get_surfaces(tbm_surface_queue_h surface_queue, + tbm_surface_h *surfaces, int *num) +{ + TBM_RETURN_VAL_IF_FAIL(surface_queue != NULL, + TBM_SURFACE_QUEUE_ERROR_INVALID_QUEUE); + TBM_RETURN_VAL_IF_FAIL(num != NULL, + TBM_SURFACE_QUEUE_ERROR_INVALID_PARAMETER); + + queue_node *node = NULL; + queue_node *tmp = NULL; + + pthread_mutex_lock(&surface_queue->lock); + + *num = 0; + LIST_FOR_EACH_ENTRY_SAFE(node, tmp, &surface_queue->list, link) { + if (surfaces) { + surfaces[*num] = node->surface; + } + *num = *num + 1; + } + + pthread_mutex_unlock(&surface_queue->lock); + + return TBM_SURFACE_QUEUE_ERROR_NONE; +} + typedef struct { int queue_size; int num_attached; diff --git a/src/tbm_surface_queue.h b/src/tbm_surface_queue.h index e3587b5..8803a60 100644 --- a/src/tbm_surface_queue.h +++ b/src/tbm_surface_queue.h @@ -127,6 +127,10 @@ tbm_surface_queue_error_e tbm_surface_queue_set_alloc_cb( tbm_surface_free_cb free_cb, void *data); +tbm_surface_queue_error_e tbm_surface_queue_get_surfaces( + tbm_surface_queue_h surface_queue, + tbm_surface_h *surfaces, int *num); + /*The functions of queue factory*/ tbm_surface_queue_h tbm_surface_queue_create(int queue_size, int width, int height, int format, int flags);