<!DOCTYPE html><html><head><title></title><style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style></head><body><div><br></div><div>On Fri, Aug 16, 2019, at 12:05, Rémi Denis-Courmont wrote:<br></div><blockquote type="cite" id="qt"><div>Hi,<br></div><div><br></div><div>Seen as this is OS-specific code, it might be simpler to use a constructor function than a one-time initialisation. I don't know macOs details though<br></div></blockquote><div><br></div><div>OK, specially since there is likely to be only one aout module in the lifetime of VLC.<br></div><div><br></div><blockquote type="cite" id="qt"><div><br></div><div class="qt-gmail_quote"><div>Le 16 août 2019 11:55:33 GMT+03:00, Thomas Guillem <thomas@gllm.fr> a écrit :<br></div><blockquote style="margin-top:0pt;margin-right:0pt;margin-bottom:0pt;margin-left:0.8ex;border-left-color:rgb(204, 204, 204);border-left-style:solid;border-left-width:1px;padding-left:1ex;" class="qt-gmail_quote"><pre class="qt-k9mail"><div><hr> modules/audio_output/audiounit_ios.m    |  5 ++++-<br></div><div> modules/audio_output/auhal.c            |  4 ++++<br></div><div> modules/audio_output/coreaudio_common.c | 17 ++++++++++-------<br></div><div> modules/audio_output/coreaudio_common.h |  2 ++<br></div><div> 4 files changed, 20 insertions(+), 8 deletions(-)<br></div><div><br></div><div>diff --git a/modules/audio_output/audiounit_ios.m b/modules/audio_output/audiounit_ios.m<br></div><div>index cbac04c2b1..59f35b04fb 100644<br></div><div>--- a/modules/audio_output/audiounit_ios.m<br></div><div>+++ b/modules/audio_output/audiounit_ios.m<br></div><div>@@ -612,8 +612,11 @@ static int<br></div><div> Open(vlc_object_t *obj)<br></div><div> {<br></div><div>     audio_output_t *aout = (audio_output_t *)obj;<br></div><div>-    aout_sys_t *sys = calloc(1, sizeof (*sys));<br></div><div> <br></div><div>+    if (ca_OnceInit() != VLC_SUCCESS)<br></div><div>+        return VLC_EGENERIC;<br></div><div>+<br></div><div>+    aout_sys_t *sys = calloc(1, sizeof (*sys));<br></div><div>     if (unlikely(sys == NULL))<br></div><div>         return VLC_ENOMEM;<br></div><div> <br></div><div>diff --git a/modules/audio_output/auhal.c b/modules/audio_output/auhal.c<br></div><div>index 6ba2765754..d9a76ac257 100644<br></div><div>--- a/modules/audio_output/auhal.c<br></div><div>+++ b/modules/audio_output/auhal.c<br></div><div>@@ -1694,6 +1694,10 @@ static void Close(vlc_object_t *obj)<br></div><div> static int Open(vlc_object_t *obj)<br></div><div> {<br></div><div>     audio_output_t *p_aout = (audio_output_t *)obj;<br></div><div>+<br></div><div>+    if (ca_OnceInit() != VLC_SUCCESS)<br></div><div>+        return VLC_EGENERIC;<br></div><div>+<br></div><div>     aout_sys_t *p_sys = calloc(1, sizeof (*p_sys));<br></div><div>     if (unlikely(p_sys == NULL))<br></div><div>         return VLC_ENOMEM;<br></div><div>diff --git a/modules/audio_output/coreaudio_common.c b/modules/audio_output/coreaudio_common.c<br></div><div>index 1720a1a5f9..c25eaae1ca 100644<br></div><div>--- a/modules/audio_output/coreaudio_common.c<br></div><div>+++ b/modules/audio_output/coreaudio_common.c<br></div><div>@@ -61,7 +61,7 @@ ca_ClearOutBuffers(audio_output_t *p_aout)<br></div><div> }<br></div><div> <br></div><div> static void<br></div><div>-ca_init_once(void)<br></div><div>+init_once_cb(void)<br></div><div> {<br></div><div>     unfair_lock.lock = os_unfair_lock_lock;<br></div><div>     if (likely(unfair_lock.lock))<br></div><div>@@ -75,6 +75,15 @@ ca_init_once(void)<br></div><div>         tinfo.numer = tinfo.denom = 0;<br></div><div> }<br></div><div> <br></div><div>+int<br></div><div>+ca_OnceInit(void)<br></div><div>+{<br></div><div>+    static pthread_once_t once = PTHREAD_ONCE_INIT;<br></div><div>+    pthread_once(&once, init_once_cb);<br></div><div>+<br></div><div>+    return likely(tinfo.denom != 0) ? VLC_SUCCESS : VLC_EGENERIC;<br></div><div>+}<br></div><div>+<br></div><div> static void<br></div><div> lock_init(struct aout_sys_common *p_sys)<br></div><div> {<br></div><div>@@ -114,9 +123,6 @@ ca_Open(audio_output_t *p_aout)<br></div><div> {<br></div><div>     struct aout_sys_common *p_sys = (struct aout_sys_common *) p_aout->sys;<br></div><div> <br></div><div>-    static pthread_once_t once = PTHREAD_ONCE_INIT;<br></div><div>-    pthread_once(&once, ca_init_once);<br></div><div>-<br></div><div>     vlc_sem_init(&p_sys->flush_sem, 0);<br></div><div>     lock_init(p_sys);<br></div><div>     p_sys->p_out_chain = NULL;<br></div><div>@@ -207,9 +213,6 @@ ca_TimeGet(audio_output_t *p_aout, vlc_tick_t *delay)<br></div><div> {<br></div><div>     struct aout_sys_common *p_sys = (struct aout_sys_common *) p_aout->sys;<br></div><div> <br></div><div>-    if (unlikely(tinfo.denom == 0))<br></div><div>-        return -1;<br></div><div>-<br></div><div>     lock_lock(p_sys);<br></div><div> <br></div><div>     if (p_sys->i_render_host_time == 0)<br></div><div>diff --git a/modules/audio_output/coreaudio_common.h b/modules/audio_output/coreaudio_common.h<br></div><div>index 11c73b31e4..60ef1fe9ca 100644<br></div><div>--- a/modules/audio_output/coreaudio_common.h<br></div><div>+++ b/modules/audio_output/coreaudio_common.h<br></div><div>@@ -81,6 +81,8 @@ struct aout_sys_common<br></div><div>     vlc_tick_t          i_dev_latency_us;<br></div><div> };<br></div><div> <br></div><div>+int ca_OnceInit(void);<br></div><div>+<br></div><div> void ca_Open(audio_output_t *p_aout);<br></div><div> <br></div><div> void ca_Close(audio_output_t *p_aout);<br></div></pre></blockquote></div><div><br></div><div>-- <br></div><div>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté. <br></div><div>_______________________________________________<br></div><div>vlc-devel mailing list<br></div><div>To unsubscribe or modify your subscription options:<br></div><div>https://mailman.videolan.org/listinfo/vlc-devel<br></div></blockquote><div><br></div></body></html>