surface_queue: checked queue mode in surface_queue_flush 04/140704/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Wed, 26 Jul 2017 06:05:36 +0000 (15:05 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Wed, 26 Jul 2017 06:05:36 +0000 (15:05 +0900)
Change-Id: I17d0ee54505bbc29c83b836c74490424c38bc99c

src/tbm_surface_queue.c

index 6e1d770..f91d4ed 100644 (file)
@@ -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);