tbm_surface_queue: move output variable setting point 00/96300/1
authorYoungJun Cho <yj44.cho@samsung.com>
Tue, 8 Nov 2016 10:55:18 +0000 (19:55 +0900)
committerYoungJun Cho <yj44.cho@samsung.com>
Tue, 8 Nov 2016 10:55:18 +0000 (19:55 +0900)
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 <yj44.cho@samsung.com>
src/tbm_surface_queue.c

index 1298cfd..e5cc13a 100644 (file)
@@ -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;