diff --git a/ijkmedia/ijksdl/android/ijksdl_codec_android_mediacodec.c b/ijkmedia/ijksdl/android/ijksdl_codec_android_mediacodec.c index ef7157bd9842f24501513f797e81ea0460fca584..1ebd90a283b97e8fefb8d83d08f387f0abc36869 100644 --- a/ijkmedia/ijksdl/android/ijksdl_codec_android_mediacodec.c +++ b/ijkmedia/ijksdl/android/ijksdl_codec_android_mediacodec.c @@ -25,14 +25,13 @@ #include #include "ijksdl/ijksdl_log.h" -static int g_amediacodec_object_serial; +static volatile int g_amediacodec_object_serial; -// TODO: thread-safe int SDL_AMediaCodec_create_object_serial() { - int object_serial = ++g_amediacodec_object_serial; + int object_serial = __sync_add_and_fetch(&g_amediacodec_object_serial, 1); if (object_serial == 0) - object_serial = SDL_AMediaCodec_create_object_serial(); + object_serial = __sync_add_and_fetch(&g_amediacodec_object_serial, 1); return object_serial; }