Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(340)

Side by Side Diff: trunk/src/core/SkPixelRef.cpp

Issue 13990003: explicitly initialize all entries in array of SkBaseMatrix, since we can't say (Closed) Base URL: http://skia.googlecode.com/svn/
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « trunk/include/core/SkThread_platform.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 #include "SkPixelRef.h" 8 #include "SkPixelRef.h"
9 #include "SkFlattenableBuffers.h" 9 #include "SkFlattenableBuffers.h"
10 #include "SkThread.h" 10 #include "SkThread.h"
11 11
12 SK_DEFINE_INST_COUNT(SkPixelRef) 12 SK_DEFINE_INST_COUNT(SkPixelRef)
13 13
14 // must be a power-of-2. undef to just use 1 mutex
15 #define PIXELREF_MUTEX_RING_COUNT 32
16 14
17 #ifdef PIXELREF_MUTEX_RING_COUNT 15 #ifdef SK_USE_POSIX_THREADS
18 static int32_t gPixelRefMutexRingIndex; 16
19 static SK_DECLARE_MUTEX_ARRAY(gPixelRefMutexRing, PIXELREF_MUTEX_RING_COUNT) ; 17 static SkBaseMutex gPixelRefMutexRing[] = {
20 #else 18 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
21 SK_DECLARE_STATIC_MUTEX(gPixelRefMutex); 19 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
20 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
21 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
22
23 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
24 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
25 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
26 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
27
28 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
29 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
30 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
31 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
32
33 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
34 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
35 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
36 { PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
37 };
38
39 // must be a power-of-2. undef to just use 1 mutex
40 #define PIXELREF_MUTEX_RING_COUNT SK_ARRAY_COUNT(gPixelRefMutexRing)
41
42 #else // not pthreads
43
44 // must be a power-of-2. undef to just use 1 mutex
45 #define PIXELREF_MUTEX_RING_COUNT 32
46 static SkBaseMutex gPixelRefMutexRing[PIXELREF_MUTEX_RING_COUNT];
47
22 #endif 48 #endif
23 49
24 static SkBaseMutex* get_default_mutex() { 50 static SkBaseMutex* get_default_mutex() {
25 #ifdef PIXELREF_MUTEX_RING_COUNT 51 static int32_t gPixelRefMutexRingIndex;
52
53 SkASSERT(SkIsPow2(PIXELREF_MUTEX_RING_COUNT));
54
26 // atomic_inc might be overkill here. It may be fine if once in a while 55 // atomic_inc might be overkill here. It may be fine if once in a while
27 // we hit a race-condition and two subsequent calls get the same index... 56 // we hit a race-condition and two subsequent calls get the same index...
28 int index = sk_atomic_inc(&gPixelRefMutexRingIndex); 57 int index = sk_atomic_inc(&gPixelRefMutexRingIndex);
29 return &gPixelRefMutexRing[index & (PIXELREF_MUTEX_RING_COUNT - 1)]; 58 return &gPixelRefMutexRing[index & (PIXELREF_MUTEX_RING_COUNT - 1)];
30 #else
31 return &gPixelRefMutex;
32 #endif
33 } 59 }
34 60
35 /////////////////////////////////////////////////////////////////////////////// 61 ///////////////////////////////////////////////////////////////////////////////
36 62
37 int32_t SkNextPixelRefGenerationID(); 63 int32_t SkNextPixelRefGenerationID();
38 64
39 int32_t SkNextPixelRefGenerationID() { 65 int32_t SkNextPixelRefGenerationID() {
40 static int32_t gPixelRefGenerationID; 66 static int32_t gPixelRefGenerationID;
41 // do a loop in case our global wraps around, as we never want to 67 // do a loop in case our global wraps around, as we never want to
42 // return a 0 68 // return a 0
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 204
179 #ifdef SK_BUILD_FOR_ANDROID 205 #ifdef SK_BUILD_FOR_ANDROID
180 void SkPixelRef::globalRef(void* data) { 206 void SkPixelRef::globalRef(void* data) {
181 this->ref(); 207 this->ref();
182 } 208 }
183 209
184 void SkPixelRef::globalUnref() { 210 void SkPixelRef::globalUnref() {
185 this->unref(); 211 this->unref();
186 } 212 }
187 #endif 213 #endif
OLDNEW
« no previous file with comments | « trunk/include/core/SkThread_platform.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698