| Index: src/pdf/SkPDFGraphicState.cpp
|
| diff --git a/src/pdf/SkPDFGraphicState.cpp b/src/pdf/SkPDFGraphicState.cpp
|
| index 9f8edfd2061bf593420e57e0090bbb37d83a81e8..1b495341b9159065c7bde6e25edfad6543335c3c 100644
|
| --- a/src/pdf/SkPDFGraphicState.cpp
|
| +++ b/src/pdf/SkPDFGraphicState.cpp
|
| @@ -82,24 +82,20 @@ size_t SkPDFGraphicState::getOutputSize(SkPDFCatalog* catalog, bool indirect) {
|
| }
|
|
|
| // static
|
| -SkTDArray<SkPDFGraphicState::GSCanonicalEntry>&
|
| -SkPDFGraphicState::CanonicalPaints() {
|
| - // This initialization is only thread safe with gcc.
|
| +SkTDArray<SkPDFGraphicState::GSCanonicalEntry>& SkPDFGraphicState::CanonicalPaints() {
|
| + CanonicalPaintsMutex().assertHeld();
|
| static SkTDArray<SkPDFGraphicState::GSCanonicalEntry> gCanonicalPaints;
|
| return gCanonicalPaints;
|
| }
|
|
|
| // static
|
| SkBaseMutex& SkPDFGraphicState::CanonicalPaintsMutex() {
|
| - // This initialization is only thread safe with gcc or when
|
| - // POD-style mutex initialization is used.
|
| SK_DECLARE_STATIC_MUTEX(gCanonicalPaintsMutex);
|
| return gCanonicalPaintsMutex;
|
| }
|
|
|
| // static
|
| -SkPDFGraphicState* SkPDFGraphicState::GetGraphicStateForPaint(
|
| - const SkPaint& paint) {
|
| +SkPDFGraphicState* SkPDFGraphicState::GetGraphicStateForPaint(const SkPaint& paint) {
|
| SkAutoMutexAcquire lock(CanonicalPaintsMutex());
|
| int index = Find(paint);
|
| if (index >= 0) {
|
| @@ -114,6 +110,7 @@ SkPDFGraphicState* SkPDFGraphicState::GetGraphicStateForPaint(
|
| // static
|
| SkPDFObject* SkPDFGraphicState::GetInvertFunction() {
|
| // This assumes that canonicalPaintsMutex is held.
|
| + CanonicalPaintsMutex().assertHeld();
|
| static SkPDFStream* invertFunction = NULL;
|
| if (!invertFunction) {
|
| // Acrobat crashes if we use a type 0 function, kpdf crashes if we use
|
| @@ -185,6 +182,7 @@ SkPDFGraphicState* SkPDFGraphicState::GetNoSMaskGraphicState() {
|
|
|
| // static
|
| int SkPDFGraphicState::Find(const SkPaint& paint) {
|
| + CanonicalPaintsMutex().assertHeld();
|
| GSCanonicalEntry search(&paint);
|
| return CanonicalPaints().find(search);
|
| }
|
|
|