mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/utils: use atomic operations on entangled_thread_counter
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
b910c6ca56
commit
b14de8e689
|
@ -3610,8 +3610,8 @@ int ff_lock_avcodec(AVCodecContext *log_ctx, AVCodec *codec)
|
||||||
if ((*lockmgr_cb)(&codec_mutex, AV_LOCK_OBTAIN))
|
if ((*lockmgr_cb)(&codec_mutex, AV_LOCK_OBTAIN))
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
entangled_thread_counter++;
|
|
||||||
if (entangled_thread_counter != 1 &&
|
if (avpriv_atomic_int_add_and_fetch(&entangled_thread_counter, 1) != 1 &&
|
||||||
!(codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE)) {
|
!(codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE)) {
|
||||||
av_log(log_ctx, AV_LOG_ERROR,
|
av_log(log_ctx, AV_LOG_ERROR,
|
||||||
"Insufficient thread locking. At least %d threads are "
|
"Insufficient thread locking. At least %d threads are "
|
||||||
|
@ -3632,7 +3632,7 @@ int ff_unlock_avcodec(void)
|
||||||
{
|
{
|
||||||
av_assert0(ff_avcodec_locked);
|
av_assert0(ff_avcodec_locked);
|
||||||
ff_avcodec_locked = 0;
|
ff_avcodec_locked = 0;
|
||||||
entangled_thread_counter--;
|
avpriv_atomic_int_add_and_fetch(&entangled_thread_counter, -1);
|
||||||
if (lockmgr_cb) {
|
if (lockmgr_cb) {
|
||||||
if ((*lockmgr_cb)(&codec_mutex, AV_LOCK_RELEASE))
|
if ((*lockmgr_cb)(&codec_mutex, AV_LOCK_RELEASE))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in New Issue