summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-03-02 19:09:31 +0100
committerDiogo Franco (Kovensky) <diogomfranco@gmail.com>2015-03-03 16:08:24 +0900
commit931f6142572ce50558f6e8b0b25c5f2e28f6ab9f (patch)
treed07d6133ce628783d11d5ef4192c419e54783e7f
parente682d825273e73be45ce29014aa6479c3e1170a9 (diff)
downloadmpv-931f6142572ce50558f6e8b0b25c5f2e28f6ab9f.tar.bz2
mpv-931f6142572ce50558f6e8b0b25c5f2e28f6ab9f.tar.xz
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)
-rw-r--r--common/msg.c5
-rw-r--r--osdep/atomics.h5
2 files changed, 9 insertions, 1 deletions
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) \