+void picture_pool_Delete(picture_pool_t *pool)
+{
+ for (int i = 0; i < pool->picture_count; i++) {
+ picture_t *picture = pool->picture[i];
+ if (pool->master) {
+ for (int j = 0; j < pool->master->picture_count; j++) {
+ if (pool->master->picture[j] == picture)
+ pool->master->picture_reserved[j] = false;
+ }
+ } else {
+ picture_release_sys_t *release_sys = picture->p_release_sys;
+
+ assert(picture->i_refcount == 0);
+ assert(!pool->picture_reserved[i]);
+
+ /* Restore old release callback */
+ picture->i_refcount = 1;
+ picture->pf_release = release_sys->release;
+ picture->p_release_sys = release_sys->release_sys;
+
+ picture_Release(picture);
+
+ free(release_sys);
+ }