<html><head></head><body>LGTM<br><br><div class="gmail_quote">Le 10 février 2020 15:39:11 GMT+02:00, Steve Lhomme <robux4@ycbcr.xyz> a écrit :<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">That's what the caller expects as the default storage format for these variables.<hr> include/vlc_threads.h | 10 +++++++---<br> src/android/thread.c  |  8 ++++----<br> src/misc/threads.c    | 21 +++++++++++++--------<br> src/win32/thread.c    |  6 +++---<br> 4 files changed, 27 insertions(+), 18 deletions(-)<br><br>diff --git a/include/vlc_threads.h b/include/vlc_threads.h<br>index 0025ca7ea7d..1598c9c804d 100644<br>--- a/include/vlc_threads.h<br>+++ b/include/vlc_threads.h<br>@@ -351,6 +351,10 @@ typedef struct vlc_timer *vlc_timer_t;<br> #endif<br> <br> #ifdef LIBVLC_NEED_CONDVAR<br>+#ifndef __cplusplus<br>+#include <stdatomic.h><br>+#endif<br>+<br> typedef struct<br> {<br>     unsigned value;<br>@@ -1098,9 +1102,9 @@ static inline void vlc_cleanup_lock (void *lock)<br> }<br> #define mutex_cleanup_push( lock ) vlc_cleanup_push (vlc_cleanup_lock, lock)<br> <br>-#if defined(LIBVLC_NEED_CONDVAR)<br>-void vlc_cancel_addr_set(void *addr);<br>-void vlc_cancel_addr_clear(void *addr);<br>+#if defined(LIBVLC_NEED_CONDVAR) && !defined(__cplusplus)<br>+void vlc_cancel_addr_set(atomic_uint *addr);<br>+void vlc_cancel_addr_clear(atomic_uint *addr);<br> #endif<br> <br> #ifdef __cplusplus<br>diff --git a/src/android/thread.c b/src/android/thread.c<br>index c213e237ea4..26723d56726 100644<br>--- a/src/android/thread.c<br>+++ b/src/android/thread.c<br>@@ -140,7 +140,7 @@ struct vlc_thread<br> <br>     struct<br>     {<br>-        void *addr; /// Non-null if waiting on futex<br>+        atomic_uint *addr; /// Non-null if waiting on futex<br>         vlc_mutex_t lock ; /// Protects futex address<br>     } wait;<br> <br>@@ -285,7 +285,7 @@ int vlc_set_priority (vlc_thread_t th, int priority)<br> <br> void vlc_cancel (vlc_thread_t thread_id)<br> {<br>-    atomic_int *addr;<br>+    atomic_uint *addr;<br> <br>     atomic_store(&thread_id->killed, true);<br> <br>@@ -335,7 +335,7 @@ noreturn void vlc_control_cancel (int cmd, ...)<br>     vlc_assert_unreachable ();<br> }<br> <br>-void vlc_cancel_addr_set(void *addr)<br>+void vlc_cancel_addr_set(atomic_uint *addr)<br> {<br>     vlc_thread_t th = vlc_thread_self();<br>     if (th == NULL)<br>@@ -347,7 +347,7 @@ void vlc_cancel_addr_set(void *addr)<br>     vlc_mutex_unlock(&th->wait.lock);<br> }<br> <br>-void vlc_cancel_addr_clear(void *addr)<br>+void vlc_cancel_addr_clear(atomic_uint *addr)<br> {<br>     vlc_thread_t th = vlc_thread_self();<br>     if (th == NULL)<br>diff --git a/src/misc/threads.c b/src/misc/threads.c<br>index 501a17ac9b3..b40348ca903 100644<br>--- a/src/misc/threads.c<br>+++ b/src/misc/threads.c<br>@@ -149,17 +149,22 @@ bool vlc_mutex_marked(const vlc_mutex_t *mutex)<br> #if defined(LIBVLC_NEED_SLEEP) || defined(LIBVLC_NEED_CONDVAR)<br> #include <stdatomic.h><br> <br>-static void vlc_cancel_addr_prepare(void *addr)<br>+static void do_vlc_cancel_addr_clear(void *addr)<br>+{<br>+    vlc_cancel_addr_clear(addr);<br>+}<br>+<br>+static void vlc_cancel_addr_prepare(atomic_uint *addr)<br> {<br>     /* Let thread subsystem on address to broadcast for cancellation */<br>     vlc_cancel_addr_set(addr);<br>-    vlc_cleanup_push(vlc_cancel_addr_clear, addr);<br>+    vlc_cleanup_push(do_vlc_cancel_addr_clear, addr);<br>     /* Check if cancellation was pending before vlc_cancel_addr_set() */<br>     vlc_testcancel();<br>     vlc_cleanup_pop();<br> }<br> <br>-static void vlc_cancel_addr_finish(void *addr)<br>+static void vlc_cancel_addr_finish(atomic_uint *addr)<br> {<br>     vlc_cancel_addr_clear(addr);<br>     /* Act on cancellation as potential wake-up source */<br>@@ -171,7 +176,7 @@ static void vlc_cancel_addr_finish(void *addr)<br> void (vlc_tick_wait)(vlc_tick_t deadline)<br> {<br>     vlc_tick_t delay;<br>-    atomic_int value = ATOMIC_VAR_INIT(0);<br>+    atomic_uint value = ATOMIC_VAR_INIT(0);<br> <br>     vlc_cancel_addr_prepare(&value);<br> <br>@@ -258,13 +263,13 @@ void vlc_cond_wait(vlc_cond_t *cond, vlc_mutex_t *mutex)<br>             value++;<br>     }<br> <br>-    vlc_cancel_addr_prepare(&cond->value);<br>+    vlc_cancel_addr_prepare(vlc_cond_value(cond));<br>     vlc_mutex_unlock(mutex);<br> <br>     vlc_atomic_wait(&cond->value, value);<br> <br>     vlc_mutex_lock(mutex);<br>-    vlc_cancel_addr_finish(&cond->value);<br>+    vlc_cancel_addr_finish(vlc_cond_value(cond));<br> }<br> <br> static int vlc_cond_wait_delay(vlc_cond_t *cond, vlc_mutex_t *mutex,<br>@@ -281,7 +286,7 @@ static int vlc_cond_wait_delay(vlc_cond_t *cond, vlc_mutex_t *mutex,<br>             value++;<br>     }<br> <br>-    vlc_cancel_addr_prepare(&cond->value);<br>+    vlc_cancel_addr_prepare(vlc_cond_value(cond));<br>     vlc_mutex_unlock(mutex);<br> <br>     if (delay > 0)<br>@@ -290,7 +295,7 @@ static int vlc_cond_wait_delay(vlc_cond_t *cond, vlc_mutex_t *mutex,<br>         value = 0;<br> <br>     vlc_mutex_lock(mutex);<br>-    vlc_cancel_addr_finish(&cond->value);<br>+    vlc_cancel_addr_finish(vlc_cond_value(cond));<br> <br>     return value ? 0 : ETIMEDOUT;<br> }<br>diff --git a/src/win32/thread.c b/src/win32/thread.c<br>index 23f9c0afe50..994bd1631b4 100644<br>--- a/src/win32/thread.c<br>+++ b/src/win32/thread.c<br>@@ -65,7 +65,7 @@ struct vlc_thread<br> <br>     struct<br>     {<br>-        atomic_int      *addr;<br>+        atomic_uint     *addr;<br>         CRITICAL_SECTION lock;<br>     } wait;<br> };<br>@@ -670,7 +670,7 @@ void vlc_control_cancel (int cmd, ...)<br>     va_end (ap);<br> }<br> <br>-void vlc_cancel_addr_set(void *addr)<br>+void vlc_cancel_addr_set(atomic_uint *addr)<br> {<br>     struct vlc_thread *th = vlc_thread_self();<br>     if (th == NULL)<br>@@ -682,7 +682,7 @@ void vlc_cancel_addr_set(void *addr)<br>     LeaveCriticalSection(&th->wait.lock);<br> }<br> <br>-void vlc_cancel_addr_clear(void *addr)<br>+void vlc_cancel_addr_clear(atomic_uint *addr)<br> {<br>     struct vlc_thread *th = vlc_thread_self();<br>     if (th == NULL)</pre></blockquote></div><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.</body></html>