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

Side by Side Diff: src/pdf/SkPDFGraphicState.cpp

Issue 419113002: Fix thread unsafe mutex initialization. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 5 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
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkData.h" 8 #include "SkData.h"
9 #include "SkPDFFormXObject.h" 9 #include "SkPDFFormXObject.h"
10 #include "SkPDFGraphicState.h" 10 #include "SkPDFGraphicState.h"
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 return SkPDFDict::getOutputSize(catalog, indirect); 81 return SkPDFDict::getOutputSize(catalog, indirect);
82 } 82 }
83 83
84 // static 84 // static
85 SkTDArray<SkPDFGraphicState::GSCanonicalEntry>& SkPDFGraphicState::CanonicalPain ts() { 85 SkTDArray<SkPDFGraphicState::GSCanonicalEntry>& SkPDFGraphicState::CanonicalPain ts() {
86 CanonicalPaintsMutex().assertHeld(); 86 CanonicalPaintsMutex().assertHeld();
87 static SkTDArray<SkPDFGraphicState::GSCanonicalEntry> gCanonicalPaints; 87 static SkTDArray<SkPDFGraphicState::GSCanonicalEntry> gCanonicalPaints;
88 return gCanonicalPaints; 88 return gCanonicalPaints;
89 } 89 }
90 90
91 SK_DECLARE_STATIC_MUTEX(gCanonicalPaintsMutex);
91 // static 92 // static
92 SkBaseMutex& SkPDFGraphicState::CanonicalPaintsMutex() { 93 SkBaseMutex& SkPDFGraphicState::CanonicalPaintsMutex() {
93 SK_DECLARE_STATIC_MUTEX(gCanonicalPaintsMutex);
94 return gCanonicalPaintsMutex; 94 return gCanonicalPaintsMutex;
95 } 95 }
96 96
97 // static 97 // static
98 SkPDFGraphicState* SkPDFGraphicState::GetGraphicStateForPaint(const SkPaint& pai nt) { 98 SkPDFGraphicState* SkPDFGraphicState::GetGraphicStateForPaint(const SkPaint& pai nt) {
99 SkAutoMutexAcquire lock(CanonicalPaintsMutex()); 99 SkAutoMutexAcquire lock(CanonicalPaintsMutex());
100 int index = Find(paint); 100 int index = Find(paint);
101 if (index >= 0) { 101 if (index >= 0) {
102 CanonicalPaints()[index].fGraphicState->ref(); 102 CanonicalPaints()[index].fGraphicState->ref();
103 return CanonicalPaints()[index].fGraphicState; 103 return CanonicalPaints()[index].fGraphicState;
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 } 278 }
279 if (bXfermodeName < 0 || bXfermodeName > SkXfermode::kLastMode || 279 if (bXfermodeName < 0 || bXfermodeName > SkXfermode::kLastMode ||
280 blend_mode_from_xfermode(bXfermodeName) == NULL) { 280 blend_mode_from_xfermode(bXfermodeName) == NULL) {
281 bXfermodeName = SkXfermode::kSrcOver_Mode; 281 bXfermodeName = SkXfermode::kSrcOver_Mode;
282 } 282 }
283 const char* bXfermodeString = blend_mode_from_xfermode(bXfermodeName); 283 const char* bXfermodeString = blend_mode_from_xfermode(bXfermodeName);
284 SkASSERT(bXfermodeString != NULL); 284 SkASSERT(bXfermodeString != NULL);
285 285
286 return strcmp(aXfermodeString, bXfermodeString) == 0; 286 return strcmp(aXfermodeString, bXfermodeString) == 0;
287 } 287 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698