[FFmpeg-devel] [PATCH 1/3] avutil/get_pool: Remove redundant initial atomic operation

Michael Niedermayer michaelni at gmx.at
Sun Mar 17 18:46:36 CET 2013


602->442 dezicycles

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
---
 libavutil/buffer.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavutil/buffer.c b/libavutil/buffer.c
index d268a7f..3475e57 100644
--- a/libavutil/buffer.c
+++ b/libavutil/buffer.c
@@ -239,14 +239,14 @@ void av_buffer_pool_uninit(AVBufferPool **ppool)
 /* remove the whole buffer list from the pool and return it */
 static BufferPoolEntry *get_pool(AVBufferPool *pool)
 {
-    BufferPoolEntry *cur = NULL, *last = NULL;
+    BufferPoolEntry *cur = *(void * volatile *)&pool->pool, *last = NULL;
 
-    do {
+    while (cur != last) {
         FFSWAP(BufferPoolEntry*, cur, last);
         cur = avpriv_atomic_ptr_cas((void * volatile *)&pool->pool, last, NULL);
         if (!cur)
             return NULL;
-    } while (cur != last);
+    }
 
     return cur;
 }
-- 
1.7.9.5



More information about the ffmpeg-devel mailing list