diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-02-07 13:55:57 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-02-07 13:55:57 +0000 |
commit | c435360f209e34c6a9865ef27ac2c828548919ad (patch) | |
tree | ae51888aed20181464388b3788bd9e26407d5cef /src/ports | |
parent | 1f1dd963366f7a81308ff8024c99bc3ee3dc9617 (diff) |
Fix android build issues with atomics
Uses inline methods for sk_atomic_inc/add/dec instead of #define.
Since those methods are declared as static in SkThread.h, they need
a definition or else the compiler generates an error. Also corrects
a typo.
BUG=skia:
R=djsollen@google.com, bungeman@google.com, bsalomon@google.com
Author: cdalton@nvidia.com
Review URL: https://codereview.chromium.org/148113010
git-svn-id: http://skia.googlecode.com/svn/trunk@13360 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/ports')
-rw-r--r-- | src/ports/SkAtomics_android.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/ports/SkAtomics_android.h b/src/ports/SkAtomics_android.h index e7b2133175..4698a64efb 100644 --- a/src/ports/SkAtomics_android.h +++ b/src/ports/SkAtomics_android.h @@ -13,9 +13,17 @@ #include <cutils/atomic.h> #include <stdint.h> -#define sk_atomic_inc(addr) android_atomic_inc(addr) -#define sk_atomic_add(addr, inc) android_atomic_add(inc, addr) -#define sk_atomic_dec(addr) android_atomic_dec(addr) +static inline __attribute__((always_inline)) int32_t sk_atomic_inc(int32_t* addr) { + return android_atomic_inc(addr); +} + +static inline __attribute__((always_inline)) int32_t sk_atomic_add(int32_t* addr, int32_t inc) { + return android_atomic_add(inc, addr); +} + +static inline __attribute__((always_inline)) int32_t sk_atomic_dec(int32_t* addr) { + return android_atomic_dec(addr); +} static inline __attribute__((always_inline)) void sk_membar_acquire__after_atomic_dec() { //HACK: Android is actually using full memory barriers. @@ -36,7 +44,7 @@ static inline __attribute__((always_inline)) int32_t sk_atomic_conditional_inc(i } } -static inline __attribute___((always_inline)) bool sk_atomic_cas(int32_t* addr, +static inline __attribute__((always_inline)) bool sk_atomic_cas(int32_t* addr, int32_t before, int32_t after) { // android_atomic_release_cas returns 0 for success (if *addr == before and it wrote after). |