00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef SkThread_platform_DEFINED
00018 #define SkThread_platform_DEFINED
00019
00020 #ifdef ANDROID
00021
00022 #include <utils/threads.h>
00023 #include <utils/Atomic.h>
00024
00025 #define sk_atomic_inc(addr) android_atomic_inc(addr)
00026 #define sk_atomic_dec(addr) android_atomic_dec(addr)
00027
00028 class SkMutex : android::Mutex {
00029 public:
00030
00031
00032 SkMutex(bool isGlobal = true) {}
00033 ~SkMutex() {}
00034
00035 void acquire() { this->lock(); }
00036 void release() { this->unlock(); }
00037 };
00038
00039 #else
00040
00044 int32_t sk_atomic_inc(int32_t* addr);
00049 int32_t sk_atomic_dec(int32_t* addr);
00050
00051 class SkMutex {
00052 public:
00053
00054
00055 SkMutex(bool isGlobal = true);
00056 ~SkMutex();
00057
00058 void acquire();
00059 void release();
00060
00061 private:
00062 bool fIsGlobal;
00063 enum {
00064 kStorageIntCount = 12
00065 };
00066 uint32_t fStorage[kStorageIntCount];
00067 };
00068
00069 #endif
00070
00071 #endif