From 4f328c9e86ab5793b49d1abfeedfb466df5515d0 Mon Sep 17 00:00:00 2001 From: YoungJun Cho Date: Tue, 8 Nov 2016 19:55:18 +0900 Subject: [PATCH] tbm_surface_queue: move output variable setting point This patch moves output variable setting point, so it could be set even function is exited by TBM_SURF_QUEUE_RETURN_***. Change-Id: Ia3190b695d96f7657f6639d46a26ec7336a7d64b Signed-off-by: YoungJun Cho --- src/tbm_surface_queue.c | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/src/tbm_surface_queue.c b/src/tbm_surface_queue.c index 1298cfd..e5cc13a 100644 --- a/src/tbm_surface_queue.c +++ b/src/tbm_surface_queue.c @@ -948,6 +948,8 @@ tbm_surface_queue_dequeue(tbm_surface_queue_h _tbm_surf_queue_mutex_lock(); + *surface = NULL; + 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(surface != NULL, @@ -960,17 +962,8 @@ tbm_surface_queue_dequeue(tbm_surface_queue_h else node = _tbm_surface_queue_dequeue(surface_queue); - if (node == NULL) { - *surface = NULL; - pthread_mutex_unlock(&surface_queue->lock); - - _tbm_surf_queue_mutex_unlock(); - return TBM_SURFACE_QUEUE_ERROR_EMPTY; - } - - if (node->surface == NULL) { - *surface = NULL; - TBM_LOG_E("_queue_node_pop_front failed\n"); + if (node == NULL || node->surface == NULL) { + TBM_LOG_E("_queue_node_pop_front failed\n"); pthread_mutex_unlock(&surface_queue->lock); _tbm_surf_queue_mutex_unlock(); @@ -1123,6 +1116,8 @@ tbm_surface_queue_acquire(tbm_surface_queue_h _tbm_surf_queue_mutex_lock(); + *surface = NULL; + 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(surface != NULL, @@ -1135,17 +1130,8 @@ tbm_surface_queue_acquire(tbm_surface_queue_h else node = _tbm_surface_queue_acquire(surface_queue); - if (node == NULL) { - *surface = NULL; - pthread_mutex_unlock(&surface_queue->lock); - - _tbm_surf_queue_mutex_unlock(); - return TBM_SURFACE_QUEUE_ERROR_EMPTY; - } - - if (node->surface == NULL) { - *surface = NULL; - TBM_LOG_E("_queue_node_pop_front failed\n"); + if (node == NULL || node->surface == NULL) { + TBM_LOG_E("_queue_node_pop_front failed\n"); pthread_mutex_unlock(&surface_queue->lock); _tbm_surf_queue_mutex_unlock(); @@ -1425,6 +1411,8 @@ tbm_surface_queue_get_surfaces(tbm_surface_queue_h surface_queue, _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, @@ -1432,7 +1420,6 @@ tbm_surface_queue_get_surfaces(tbm_surface_queue_h surface_queue, pthread_mutex_lock(&surface_queue->lock); - *num = 0; LIST_FOR_EACH_ENTRY(node, &surface_queue->list, link) { if (surfaces) surfaces[*num] = node->surface; -- 2.7.4