From: Changyeon Lee Date: Tue, 18 Apr 2017 08:46:58 +0000 (+0900) Subject: tbm_surface_queue: added tbm_surface_queue_get_trace_surface_num X-Git-Tag: accepted/tizen/3.0/common/20170518.163335~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;ds=sidebyside;h=ff1adab38c5fd7a790fbd9eaa08ea563aee32f35;p=platform%2Fcore%2Fuifw%2Flibtbm.git tbm_surface_queue: added tbm_surface_queue_get_trace_surface_num Change-Id: I281665a55f671b9e96d95b60d5977f0f0f10b2ee --- diff --git a/src/tbm_surface_queue.c b/src/tbm_surface_queue.c index aaa9057..ef6470b 100644 --- a/src/tbm_surface_queue.c +++ b/src/tbm_surface_queue.c @@ -1635,6 +1635,46 @@ 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_trace_surface_num( + tbm_surface_queue_h surface_queue, tbm_surface_queue_trace trace, int *num) +{ + _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_SURFACE_QUEUE_ERROR_INVALID_PARAMETER); + + pthread_mutex_lock(&surface_queue->lock); + + switch (trace) { + case TBM_SURFACE_QUEUE_TRACE_NONE: + *num = 0; + break; + case TBM_SURFACE_QUEUE_TRACE_DEQUEUE: + *num = _tbm_surface_queue_get_node_count(surface_queue, QUEUE_NODE_TYPE_DEQUEUE); + break; + case TBM_SURFACE_QUEUE_TRACE_ENQUEUE: + *num = _tbm_surface_queue_get_node_count(surface_queue, QUEUE_NODE_TYPE_ENQUEUE); + break; + case TBM_SURFACE_QUEUE_TRACE_ACQUIRE: + *num = _tbm_surface_queue_get_node_count(surface_queue, QUEUE_NODE_TYPE_ACQUIRE); + break; + case TBM_SURFACE_QUEUE_TRACE_RELEASE: + *num = _tbm_surface_queue_get_node_count(surface_queue, QUEUE_NODE_TYPE_RELEASE); + break; + } + + pthread_mutex_unlock(&surface_queue->lock); + + _tbm_surf_queue_mutex_unlock(); + + return TBM_SURFACE_QUEUE_ERROR_NONE; +} + typedef struct { int flags; } tbm_queue_default; diff --git a/src/tbm_surface_queue.h b/src/tbm_surface_queue.h index 9a336d1..cf0c413 100644 --- a/src/tbm_surface_queue.h +++ b/src/tbm_surface_queue.h @@ -173,6 +173,9 @@ 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_trace_surface_num( + tbm_surface_queue_h surface_queue, tbm_surface_queue_trace trace, 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);