diff options
author | wm4 <wm4@nowhere> | 2015-03-02 19:09:31 +0100 |
---|---|---|
committer | Diogo Franco (Kovensky) <diogomfranco@gmail.com> | 2015-03-03 16:08:24 +0900 |
commit | 931f6142572ce50558f6e8b0b25c5f2e28f6ab9f (patch) | |
tree | d07d6133ce628783d11d5ef4192c419e54783e7f | |
parent | e682d825273e73be45ce29014aa6479c3e1170a9 (diff) | |
download | mpv-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.c | 5 | ||||
-rw-r--r-- | osdep/atomics.h | 5 |
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) \ |