use ff_thread_once
Suggested-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
... | ... |
@@ -19,6 +19,7 @@ |
19 | 19 |
*/ |
20 | 20 |
|
21 | 21 |
#include "config.h" |
22 |
+#include "libavutil/thread.h" |
|
22 | 23 |
#include "avdevice.h" |
23 | 24 |
|
24 | 25 |
#define REGISTER_OUTDEV(X, x) \ |
... | ... |
@@ -37,14 +38,8 @@ |
37 | 37 |
|
38 | 38 |
#define REGISTER_INOUTDEV(X, x) REGISTER_OUTDEV(X, x); REGISTER_INDEV(X, x) |
39 | 39 |
|
40 |
-void avdevice_register_all(void) |
|
40 |
+static void register_all(void) |
|
41 | 41 |
{ |
42 |
- static int initialized; |
|
43 |
- |
|
44 |
- if (initialized) |
|
45 |
- return; |
|
46 |
- initialized = 1; |
|
47 |
- |
|
48 | 42 |
/* devices */ |
49 | 43 |
REGISTER_INOUTDEV(ALSA, alsa); |
50 | 44 |
REGISTER_INDEV (AVFOUNDATION, avfoundation); |
... | ... |
@@ -76,3 +71,10 @@ void avdevice_register_all(void) |
76 | 76 |
REGISTER_INDEV (LIBCDIO, libcdio); |
77 | 77 |
REGISTER_INDEV (LIBDC1394, libdc1394); |
78 | 78 |
} |
79 |
+ |
|
80 |
+void avdevice_register_all(void) |
|
81 |
+{ |
|
82 |
+ AVOnce control = AV_ONCE_INIT; |
|
83 |
+ |
|
84 |
+ ff_thread_once(&control, register_all); |
|
85 |
+} |