From ff1adab38c5fd7a790fbd9eaa08ea563aee32f35 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 18 Apr 2017 17:46:58 +0900 Subject: [PATCH] tbm_surface_queue: added tbm_surface_queue_get_trace_surface_num Change-Id: I281665a55f671b9e96d95b60d5977f0f0f10b2ee --- src/tbm_surface_queue.c | 40 ++++++++++++++++++++++++++++++++++++++++ src/tbm_surface_queue.h | 3 +++ 2 files changed, 43 insertions(+) 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); -- 2.7.4