]> git.sesse.net Git - vlc/blobdiff - src/misc/picture_pool.c
es_format: avoid copy in video_format_IsSimilar() if possible
[vlc] / src / misc / picture_pool.c
index 3603887482e363505b98152bfc14482ad05475d7..98e093f130bee4d084ba11327b43baa4599768f8 100644 (file)
@@ -221,8 +221,6 @@ picture_pool_t *picture_pool_Reserve(picture_pool_t *master, unsigned count)
     if (!pool)
         goto error;
 
-    pool->pic_lock   = master->pic_lock;
-    pool->pic_unlock = master->pic_unlock;
     return pool;
 
 error:
@@ -253,7 +251,6 @@ picture_t *picture_pool_Get(picture_pool_t *pool)
             vlc_mutex_lock(&pool->lock);
             sys->in_use = false;
             pool->refs--;
-            vlc_mutex_unlock(&pool->lock);
             continue;
         }
 
@@ -326,7 +323,16 @@ void picture_pool_NonEmpty(picture_pool_t *pool)
     vlc_mutex_unlock(&pool->lock);
 }
 
-int picture_pool_GetSize(picture_pool_t *pool)
+unsigned picture_pool_GetSize(const picture_pool_t *pool)
 {
     return pool->picture_count;
 }
+
+void picture_pool_Enum(picture_pool_t *pool, void (*cb)(void *, picture_t *),
+                       void *opaque)
+{
+    /* NOTE: So far, the pictures table cannot change after the pool is created
+     * so there is no need to lock the pool mutex here. */
+    for (unsigned i = 0; i < pool->picture_count; i++)
+        cb(opaque, pool->picture[i]);
+}