Revert "surface_queue: use MONOTOINIC timer in pthread_cond" 53/201853/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Wed, 20 Mar 2019 06:52:24 +0000 (15:52 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Wed, 20 Mar 2019 06:58:24 +0000 (15:58 +0900)
This reverts commit 7aca14d80aeab3cd919dee892f7acc4394287394.

Change-Id: Ic27993d46b21b8a245f1d461dc4668d98439b7b8

src/tbm_surface_queue.c

index 5d405e0..2377a3f 100644 (file)
@@ -33,7 +33,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #include "tbm_bufmgr_int.h"
 #include "list.h"
-#include <time.h>
 
 #define FREE_QUEUE     1
 #define DIRTY_QUEUE    2
@@ -592,8 +591,6 @@ _tbm_surface_queue_init(tbm_surface_queue_h surface_queue,
                        int width, int height, int format,
                        const tbm_surface_queue_interface *impl, void *data)
 {
-       pthread_condattr_t attr;
-
        TBM_RETURN_IF_FAIL(surface_queue != NULL);
        TBM_RETURN_IF_FAIL(impl != NULL);
 
@@ -601,12 +598,8 @@ _tbm_surface_queue_init(tbm_surface_queue_h surface_queue,
                _init_tbm_surf_queue_bufmgr();
 
        pthread_mutex_init(&surface_queue->lock, NULL);
-
-       pthread_condattr_init(&attr);
-       pthread_condattr_setclock(&attr, CLOCK_MONOTONIC);
-       pthread_cond_init(&surface_queue->free_cond, &attr);
-       pthread_cond_init(&surface_queue->dirty_cond, &attr);
-       pthread_condattr_destroy(&attr);
+       pthread_cond_init(&surface_queue->free_cond, NULL);
+       pthread_cond_init(&surface_queue->dirty_cond, NULL);
 
        surface_queue->queue_size = queue_size;
        surface_queue->width = width;
@@ -1360,18 +1353,13 @@ tbm_surface_queue_can_dequeue_wait_timeout(tbm_surface_queue_h surface_queue, in
        _tbm_surf_queue_mutex_unlock();
 
        while (1) {
-               clock_gettime(CLOCK_MONOTONIC, &tp);
+               clock_gettime(CLOCK_REALTIME, &tp);
 
                if (ms_timeout > 1000)
                        tp.tv_sec += ms_timeout / 1000;
 
                tp.tv_nsec += (ms_timeout % 1000) * 1000000;
 
-               if (tp.tv_nsec > 1000000000L) {
-                       tp.tv_sec++;
-                       tp.tv_nsec -= 1000000000L;
-               }
-
                ret = pthread_cond_timedwait(&surface_queue->free_cond, &surface_queue->lock, &tp);
                if (ret) {
                        if (ret == ETIMEDOUT) {
@@ -1381,7 +1369,8 @@ tbm_surface_queue_can_dequeue_wait_timeout(tbm_surface_queue_h surface_queue, in
                        } else {
                                TBM_INFO("surface_queue:%p timedwait error retry wait", surface_queue);
                        }
-               } else {
+               }
+               else {
                        pthread_mutex_unlock(&surface_queue->lock);
                        return TBM_SURFACE_QUEUE_ERROR_NONE;
                }