Chromium Code Reviews| Index: trunk/src/core/SkPixelRef.cpp |
| =================================================================== |
| --- trunk/src/core/SkPixelRef.cpp (revision 8632) |
| +++ trunk/src/core/SkPixelRef.cpp (working copy) |
| @@ -11,25 +11,49 @@ |
| SK_DEFINE_INST_COUNT(SkPixelRef) |
| -// must be a power-of-2. undef to just use 1 mutex |
| -#define PIXELREF_MUTEX_RING_COUNT 32 |
| -#ifdef PIXELREF_MUTEX_RING_COUNT |
| - static int32_t gPixelRefMutexRingIndex; |
| - static SK_DECLARE_MUTEX_ARRAY(gPixelRefMutexRing, PIXELREF_MUTEX_RING_COUNT); |
| -#else |
| - SK_DECLARE_STATIC_MUTEX(gPixelRefMutex); |
| +#ifdef SK_USE_POSIX_THREADS |
| + |
| + static SkBaseMutex gPixelRefMutexRing[] = { |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
|
bungeman-skia
2013/04/11 21:47:06
Since we always want this to be a power of two, wo
|
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }, |
| + }; |
| + |
| + // must be a power-of-2. undef to just use 1 mutex |
|
bungeman-skia
2013/04/11 21:47:06
SK_COMPILE_ASSERT the size if a power of 2?
Do th
|
| + #define PIXELREF_MUTEX_RING_COUNT SK_ARRAY_COUNT(gPixelRefMutexRing) |
| + |
| +#else // not pthreads |
| + |
| + // must be a power-of-2. undef to just use 1 mutex |
| + #define PIXELREF_MUTEX_RING_COUNT 32 |
| + static SkBaseMutex gPixelRefMutexRing[PIXELREF_MUTEX_RING_COUNT]; |
| + |
| #endif |
| static SkBaseMutex* get_default_mutex() { |
| -#ifdef PIXELREF_MUTEX_RING_COUNT |
| + static int32_t gPixelRefMutexRingIndex; |
| + |
| // atomic_inc might be overkill here. It may be fine if once in a while |
| // we hit a race-condition and two subsequent calls get the same index... |
| int index = sk_atomic_inc(&gPixelRefMutexRingIndex); |
| return &gPixelRefMutexRing[index & (PIXELREF_MUTEX_RING_COUNT - 1)]; |
| -#else |
| - return &gPixelRefMutex; |
| -#endif |
| } |
| /////////////////////////////////////////////////////////////////////////////// |