vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sun Feb 25 21:05:19 2018 +0200| [f8e00adcdc96457cb4b1bf36f9378db773736224] | committer: Rémi Denis-Courmont
picture_pool: simplify using ctz() Same as 09fa628168421b5d8881b72ced9390d84dd58123. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f8e00adcdc96457cb4b1bf36f9378db773736224 --- src/misc/picture_pool.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/misc/picture_pool.c b/src/misc/picture_pool.c index fd2724cc18..74712c81f5 100644 --- a/src/misc/picture_pool.c +++ b/src/misc/picture_pool.c @@ -242,8 +242,6 @@ picture_t *picture_pool_Get(picture_pool_t *pool) picture_t *picture_pool_Wait(picture_pool_t *pool) { - unsigned i; - vlc_mutex_lock(&pool->lock); assert(pool->refs > 0); @@ -257,22 +255,21 @@ picture_t *picture_pool_Wait(picture_pool_t *pool) vlc_cond_wait(&pool->wait, &pool->lock); } - i = ffsll(pool->available); - assert(i > 0); - pool->available &= ~(1ULL << (i - 1)); + int i = ctz(pool->available); + pool->available &= ~(1ULL << i); vlc_mutex_unlock(&pool->lock); - picture_t *picture = pool->picture[i - 1]; + picture_t *picture = pool->picture[i]; if (pool->pic_lock != NULL && pool->pic_lock(picture) != VLC_SUCCESS) { vlc_mutex_lock(&pool->lock); - pool->available |= 1ULL << (i - 1); + pool->available |= 1ULL << i; vlc_cond_signal(&pool->wait); vlc_mutex_unlock(&pool->lock); return NULL; } - picture_t *clone = picture_pool_ClonePicture(pool, i - 1); + picture_t *clone = picture_pool_ClonePicture(pool, i); if (clone != NULL) { assert(clone->p_next == NULL); atomic_fetch_add(&pool->refs, 1); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
