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

Unified Diff: src/pdf/SkPDFGraphicState.cpp

Issue 944643002: PDF: Now threadsafe! (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: TODO=DONE Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/pdf/SkPDFGraphicState.h ('k') | src/pdf/SkPDFImage.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/pdf/SkPDFGraphicState.cpp
diff --git a/src/pdf/SkPDFGraphicState.cpp b/src/pdf/SkPDFGraphicState.cpp
index 46aa1d1ea40aa3d85ba85fb72ea899eabefbd68d..4ec0821974aabc9ba3cf988eecc733e944e0dab3 100644
--- a/src/pdf/SkPDFGraphicState.cpp
+++ b/src/pdf/SkPDFGraphicState.cpp
@@ -113,9 +113,8 @@ bool SkPDFGraphicState::equals(const SkPaint& paint) const {
}
SkPDFGraphicState::~SkPDFGraphicState() {
- SkAutoMutexAcquire lock(SkPDFCanon::GetPaintMutex());
- if (!fSMask) {
- SkPDFCanon::GetCanon().removeGraphicState(this);
+ if (fCanon) {
+ fCanon->removeGraphicState(this);
}
}
@@ -126,15 +125,14 @@ void SkPDFGraphicState::emitObject(SkWStream* stream, SkPDFCatalog* catalog) {
// static
SkPDFGraphicState* SkPDFGraphicState::GetGraphicStateForPaint(
- const SkPaint& paint) {
- SkAutoMutexAcquire lock(SkPDFCanon::GetPaintMutex());
- SkPDFGraphicState* pdfGraphicState =
- SkPDFCanon::GetCanon().findGraphicState(paint);
+ SkPDFCanon* canon, const SkPaint& paint) {
+ SkASSERT(canon);
+ SkPDFGraphicState* pdfGraphicState = canon->findGraphicState(paint);
if (pdfGraphicState) {
return SkRef(pdfGraphicState);
}
- pdfGraphicState = new SkPDFGraphicState(paint);
- SkPDFCanon::GetCanon().addGraphicState(pdfGraphicState);
+ pdfGraphicState = new SkPDFGraphicState(canon, paint);
+ canon->addGraphicState(pdfGraphicState);
return pdfGraphicState;
}
@@ -181,7 +179,6 @@ SkPDFGraphicState* SkPDFGraphicState::GetSMaskGraphicState(
SkPDFGraphicState* result = new SkPDFGraphicState;
result->fPopulated = true;
- result->fSMask = true;
result->insertName("Type", "ExtGState");
result->insert("SMask", sMaskDict.get());
@@ -195,7 +192,6 @@ SkPDFGraphicState* SkPDFGraphicState::GetSMaskGraphicState(
SkPDFGraphicState* SkPDFGraphicState::CreateNoSMaskGraphicState() {
SkPDFGraphicState* noSMaskGS = SkNEW(SkPDFGraphicState);
noSMaskGS->fPopulated = true;
- noSMaskGS->fSMask = true;
noSMaskGS->insertName("Type", "ExtGState");
noSMaskGS->insertName("SMask", "None");
return noSMaskGS;
@@ -211,15 +207,10 @@ SkPDFGraphicState* SkPDFGraphicState::GetNoSMaskGraphicState() {
}
SkPDFGraphicState::SkPDFGraphicState()
- : fPopulated(false),
- fSMask(false) {
-}
+ : fCanon(NULL), fPopulated(false) {}
-SkPDFGraphicState::SkPDFGraphicState(const SkPaint& paint)
- : fPaint(paint),
- fPopulated(false),
- fSMask(false) {
-}
+SkPDFGraphicState::SkPDFGraphicState(SkPDFCanon* canon, const SkPaint& paint)
+ : fCanon(canon), fPaint(paint), fPopulated(false) {}
// populateDict and operator== have to stay in sync with each other.
void SkPDFGraphicState::populateDict() {
« no previous file with comments | « src/pdf/SkPDFGraphicState.h ('k') | src/pdf/SkPDFImage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698