vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sun Nov 11 17:06:46 2012 +0200| [04c94d3708e7662c2c683997145b1d6ceb9c96f2] | committer: Rémi Denis-Courmont
aout: use atomic variable instead of aout lock for statistics > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=04c94d3708e7662c2c683997145b1d6ceb9c96f2 --- src/audio_output/aout_internal.h | 3 +-- src/audio_output/dec.c | 17 +++++------------ 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/audio_output/aout_internal.h b/src/audio_output/aout_internal.h index 994ffac..d9a8706 100644 --- a/src/audio_output/aout_internal.h +++ b/src/audio_output/aout_internal.h @@ -75,8 +75,7 @@ typedef struct aout_request_vout_t request_vout; bool recycle_vout; - unsigned buffers_lost; - + atomic_uint buffers_lost; vlc_atomic_t restart; } aout_owner_t; diff --git a/src/audio_output/dec.c b/src/audio_output/dec.c index bbf48cc..54fa306 100644 --- a/src/audio_output/dec.c +++ b/src/audio_output/dec.c @@ -96,10 +96,10 @@ error: date_Init (&owner->sync.date, owner->mixer_format.i_rate, 1); date_Set (&owner->sync.date, VLC_TS_INVALID); owner->sync.resamp_type = AOUT_RESAMPLING_NONE; + aout_unlock( p_aout ); - owner->buffers_lost = 0; + atomic_init (&owner->buffers_lost, 0); - aout_unlock( p_aout ); return ret; } @@ -317,7 +317,7 @@ int aout_DecPlay (audio_output_t *aout, block_t *block, int input_rate) block = aout_FiltersPlay (aout, block, input_rate); if (block == NULL) { - owner->buffers_lost++; + atomic_fetch_add(&owner->buffers_lost, 1); goto out; } @@ -386,21 +386,14 @@ out: return 0; drop: block_Release (block); - owner->buffers_lost++; + atomic_fetch_add(&owner->buffers_lost, 1); goto out; } int aout_DecGetResetLost (audio_output_t *aout) { aout_owner_t *owner = aout_owner (aout); - unsigned val; - - aout_lock (aout); - val = owner->buffers_lost; - owner->buffers_lost = 0; - aout_unlock (aout); - - return val; + return atomic_exchange(&owner->buffers_lost, 0); } void aout_DecChangePause (audio_output_t *aout, bool paused, mtime_t date) _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
