From 3e21235ddebde4fa3dfa2dc033ed582514b700f1 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Wed, 26 Jul 2017 15:05:36 +0900 Subject: [PATCH] surface_queue: checked queue mode in surface_queue_flush Change-Id: I17d0ee54505bbc29c83b836c74490424c38bc99c --- src/tbm_surface_queue.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/tbm_surface_queue.c b/src/tbm_surface_queue.c index 6e1d770..f91d4ed 100644 --- a/src/tbm_surface_queue.c +++ b/src/tbm_surface_queue.c @@ -1809,12 +1809,20 @@ tbm_surface_queue_flush(tbm_surface_queue_h surface_queue) pthread_mutex_lock(&surface_queue->lock); - /* Destory surface and Push to free_queue */ - LIST_FOR_EACH_ENTRY_SAFE(node, tmp, &surface_queue->free_queue.head, item_link) - _queue_delete_node(surface_queue, node); + if (surface_queue->modes & TBM_SURFACE_QUEUE_MODE_GUARANTEE_CYCLE) { + /* Destory surface and Push to free_queue */ + LIST_FOR_EACH_ENTRY_SAFE(node, tmp, &surface_queue->free_queue.head, item_link) + _queue_delete_node(surface_queue, node); + + LIST_FOR_EACH_ENTRY(node, &surface_queue->list, link) + node->delete_pending = 1; + } else { + LIST_FOR_EACH_ENTRY_SAFE(node, tmp, &surface_queue->list, link) + _queue_delete_node(surface_queue, node); - LIST_FOR_EACH_ENTRY(node, &surface_queue->list, link) - node->delete_pending = 1; + _queue_init(&surface_queue->dirty_queue); + LIST_INITHEAD(&surface_queue->list); + } /* Reset queue */ _queue_init(&surface_queue->free_queue); -- 2.7.4