summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2015-03-13 22:28:25 +0100
committerMichael Niedermayer <michaelni@gmx.at>2015-03-13 23:59:07 +0100
commitb14de8e6895cf1191e2c2f94e1c33db296a34342 (patch)
tree618e5d932a92d23203822f4e96515062a57b8cb3
parentb910c6ca562ace58144d338089206889c8eadde3 (diff)
avcodec/utils: use atomic operations on entangled_thread_counter
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/utils.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 14a4d7b6c5..82f74d6df2 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -3610,8 +3610,8 @@ int ff_lock_avcodec(AVCodecContext *log_ctx, AVCodec *codec)
if ((*lockmgr_cb)(&codec_mutex, AV_LOCK_OBTAIN))
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)) {
av_log(log_ctx, AV_LOG_ERROR,
"Insufficient thread locking. At least %d threads are "
@@ -3632,7 +3632,7 @@ int ff_unlock_avcodec(void)
{
av_assert0(ff_avcodec_locked);
ff_avcodec_locked = 0;
- entangled_thread_counter--;
+ avpriv_atomic_int_add_and_fetch(&entangled_thread_counter, -1);
if (lockmgr_cb) {
if ((*lockmgr_cb)(&codec_mutex, AV_LOCK_RELEASE))
return -1;