vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Thu Jun 25 21:02:46 2015 +0300| [ac91416b248e44b024ed4aed712095b2a4f6ab06] | committer: Rémi Denis-Courmont
picture_pool: simplify allocation > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ac91416b248e44b024ed4aed712095b2a4f6ab06 --- src/misc/picture_pool.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/misc/picture_pool.c b/src/misc/picture_pool.c index 00353e1..34e3089 100644 --- a/src/misc/picture_pool.c +++ b/src/misc/picture_pool.c @@ -46,15 +46,14 @@ struct picture_gc_sys_t { }; struct picture_pool_t { - uint64_t tick; - /* */ - unsigned picture_count; - picture_t **picture; - + uint64_t tick; int (*pic_lock)(picture_t *); void (*pic_unlock)(picture_t *); - unsigned refs; vlc_mutex_t lock; + + unsigned refs; + unsigned picture_count; + picture_t *picture[]; }; void picture_pool_Release(picture_pool_t *pool) @@ -79,7 +78,6 @@ void picture_pool_Release(picture_pool_t *pool) } vlc_mutex_destroy(&pool->lock); - free(pool->picture); free(pool); } @@ -134,22 +132,17 @@ static picture_t *picture_pool_ClonePicture(picture_pool_t *pool, picture_pool_t *picture_pool_NewExtended(const picture_pool_configuration_t *cfg) { - picture_pool_t *pool = malloc(sizeof (*pool)); + picture_pool_t *pool = malloc(sizeof (*pool) + + cfg->picture_count * sizeof (picture_t *)); if (unlikely(pool == NULL)) return NULL; pool->tick = 1; - pool->picture_count = cfg->picture_count; - pool->picture = calloc(pool->picture_count, sizeof (*pool->picture)); - if (unlikely(pool->picture == NULL)) { - free(pool); - return NULL; - } - - pool->refs = 1; pool->pic_lock = cfg->lock; pool->pic_unlock = cfg->unlock; vlc_mutex_init(&pool->lock); + pool->refs = 1; + pool->picture_count = cfg->picture_count; for (unsigned i = 0; i < cfg->picture_count; i++) { picture_t *picture = picture_pool_ClonePicture(pool, cfg->picture[i]); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
