From 931f6142572ce50558f6e8b0b25c5f2e28f6ab9f Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 2 Mar 2015 19:09:31 +0100 Subject: msg: use relaxed atomics for log level test This should be sufficient. If stdatomic.h is not available, we make no difference. (cherry picked from commit 01b87e509c292189acdd96bc7a216b50eafbce9e) --- common/msg.c | 5 ++++- osdep/atomics.h | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/common/msg.c b/common/msg.c index 3092845a02..2ae52a4dda 100644 --- a/common/msg.c +++ b/common/msg.c @@ -136,8 +136,11 @@ bool mp_msg_test(struct mp_log *log, int lev) struct mp_log_root *root = log->root; if (!root || root->mute) return false; - if (atomic_load(&log->reload_counter) != atomic_load(&root->reload_counter)) + if (atomic_load_explicit(&log->reload_counter, memory_order_relaxed) != + atomic_load_explicit(&root->reload_counter, memory_order_relaxed)) + { update_loglevel(log); + } return lev <= log->level; } diff --git a/osdep/atomics.h b/osdep/atomics.h index 39c741acd7..8431211476 100644 --- a/osdep/atomics.h +++ b/osdep/atomics.h @@ -41,6 +41,11 @@ typedef struct { volatile unsigned long long v; } atomic_ullong; #define ATOMIC_VAR_INIT(x) \ {.v = (x)} +#define memory_order_relaxed 1 +#define memory_order_seq_cst 2 + +#define atomic_load_explicit(p, e) atomic_load(p) + #if HAVE_ATOMIC_BUILTINS #define atomic_load(p) \ -- cgit v1.2.3