Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit a64f5b2

Browse files
herbderbySkia Commit-Bot
authored andcommitted
Remove SkExclusiveStrikePtr. Replace it with sk_sp<SkStrike>
* Rename all the Exclusive things. Change-Id: If6b5fec5130bf58c396e0a472730efd2ae38c0d2 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/273057 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Herb Derby <herb@google.com>
1 parent bfe5a68 commit a64f5b2

File tree

10 files changed

+34
-115
lines changed

10 files changed

+34
-115
lines changed

bench/PathTextBench.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ class PathTextBench : public Benchmark {
4848
void onDelayedSetup() override {
4949
SkFont defaultFont;
5050
SkStrikeSpec strikeSpec = SkStrikeSpec::MakeWithNoDevice(defaultFont);
51-
auto cache = strikeSpec.findOrCreateExclusiveStrike();
51+
auto strike = strikeSpec.findOrCreateStrike();
5252
for (int i = 0; i < kNumGlyphs; ++i) {
5353
SkPackedGlyphID id(defaultFont.unicharToGlyph(kGlyphs[i]));
54-
sk_ignore_unused_variable(cache->getScalerContext()->getPath(id, &fGlyphs[i]));
54+
sk_ignore_unused_variable(strike->getScalerContext()->getPath(id, &fGlyphs[i]));
5555
fGlyphs[i].setIsVolatile(fUncached);
5656
}
5757

samplecode/SamplePathText.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ class PathText : public Sample {
3434
void onOnceBeforeDraw() final {
3535
SkFont defaultFont;
3636
SkStrikeSpec strikeSpec = SkStrikeSpec::MakeWithNoDevice(defaultFont);
37-
auto cache = strikeSpec.findOrCreateExclusiveStrike();
37+
auto strike = strikeSpec.findOrCreateStrike();
3838
SkPath glyphPaths[52];
3939
for (int i = 0; i < 52; ++i) {
4040
// I and l are rects on OS X ...
4141
char c = "aQCDEFGH7JKLMNOPBRZTUVWXYSAbcdefghijk1mnopqrstuvwxyz"[i];
4242
SkPackedGlyphID id(defaultFont.unicharToGlyph(c));
43-
sk_ignore_unused_variable(cache->getScalerContext()->getPath(id, &glyphPaths[i]));
43+
sk_ignore_unused_variable(strike->getScalerContext()->getPath(id, &glyphPaths[i]));
4444
}
4545

4646
for (int i = 0; i < kNumPaths; ++i) {

src/core/SkFont.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ SkScalar SkFont::getMetrics(SkFontMetrics* metrics) const {
352352
metrics = &storage;
353353
}
354354

355-
auto cache = strikeSpec.findOrCreateExclusiveStrike();
355+
auto cache = strikeSpec.findOrCreateStrike();
356356
*metrics = cache->getFontMetrics();
357357

358358
if (strikeSpec.strikeToSourceRatio() != 1) {

src/core/SkGlyphRunPainter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ void SkGlyphRunListPainter::drawForBitmapDevice(
104104
SkStrikeSpec strikeSpec = SkStrikeSpec::MakePath(
105105
runFont, runPaint, props, fScalerContextFlags);
106106

107-
auto strike = strikeSpec.findOrCreateExclusiveStrike();
107+
auto strike = strikeSpec.findOrCreateStrike();
108108

109109
fDrawable.startSource(fRejects.source(), drawOrigin);
110110
strike->prepareForPathDrawing(&fDrawable, &fRejects);
@@ -121,7 +121,7 @@ void SkGlyphRunListPainter::drawForBitmapDevice(
121121
SkStrikeSpec strikeSpec = SkStrikeSpec::MakeMask(
122122
runFont, runPaint, props, fScalerContextFlags, deviceMatrix);
123123

124-
auto strike = strikeSpec.findOrCreateExclusiveStrike();
124+
auto strike = strikeSpec.findOrCreateStrike();
125125

126126
fDrawable.startDevice(
127127
fRejects.source(), drawOrigin, deviceMatrix, strike->roundingSpec());

src/core/SkRemoteGlyphCache.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -943,7 +943,7 @@ bool SkStrikeClient::readStrikeData(const volatile void* memory, size_t memorySi
943943
SkAutoDescriptor ad;
944944
auto* client_desc = auto_descriptor_from_desc(sourceAd.getDesc(), tf->uniqueID(), &ad);
945945

946-
auto strike = fStrikeCache->findStrikeExclusive(*client_desc);
946+
auto strike = fStrikeCache->findStrike(*client_desc);
947947
// Metrics are only sent the first time. If the metrics are not initialized, there must
948948
// be an existing strike.
949949
if (fontMetricsInitialized && strike == nullptr) READ_FAILURE
@@ -953,7 +953,7 @@ bool SkStrikeClient::readStrikeData(const volatile void* memory, size_t memorySi
953953
// effects.
954954
SkScalerContextEffects effects;
955955
auto scaler = tf->createScalerContext(effects, client_desc);
956-
strike = fStrikeCache->createStrikeExclusive(
956+
strike = fStrikeCache->createStrike(
957957
*client_desc, std::move(scaler), &fontMetrics,
958958
std::make_unique<DiscardableStrikePinner>(
959959
spec.discardableHandleId, fDiscardableHandleManager));

src/core/SkStrikeCache.cpp

Lines changed: 5 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -31,58 +31,6 @@ SkStrikeCache* SkStrikeCache::GlobalStrikeCache() {
3131
return cache;
3232
}
3333

34-
SkStrikeCache::ExclusiveStrikePtr::ExclusiveStrikePtr(sk_sp<Strike> strike)
35-
: fStrike{std::move(strike)} {}
36-
37-
SkStrikeCache::ExclusiveStrikePtr::ExclusiveStrikePtr()
38-
: fStrike{nullptr} {}
39-
40-
SkStrikeCache::ExclusiveStrikePtr::ExclusiveStrikePtr(ExclusiveStrikePtr&& o)
41-
: fStrike{std::move(o.fStrike)} {
42-
o.fStrike = nullptr;
43-
}
44-
45-
SkStrikeCache::ExclusiveStrikePtr&
46-
SkStrikeCache::ExclusiveStrikePtr::operator = (ExclusiveStrikePtr&& that) {
47-
fStrike = std::move(that.fStrike);
48-
return *this;
49-
}
50-
51-
SkStrike* SkStrikeCache::ExclusiveStrikePtr::get() const {
52-
return fStrike.get();
53-
}
54-
55-
SkStrike* SkStrikeCache::ExclusiveStrikePtr::operator -> () const {
56-
return this->get();
57-
}
58-
59-
SkStrike& SkStrikeCache::ExclusiveStrikePtr::operator * () const {
60-
return *this->get();
61-
}
62-
63-
SkStrikeCache::ExclusiveStrikePtr::operator bool () const {
64-
return fStrike != nullptr;
65-
}
66-
67-
bool operator == (const SkStrikeCache::ExclusiveStrikePtr& lhs,
68-
const SkStrikeCache::ExclusiveStrikePtr& rhs) {
69-
return lhs.fStrike == rhs.fStrike;
70-
}
71-
72-
bool operator == (const SkStrikeCache::ExclusiveStrikePtr& lhs, decltype(nullptr)) {
73-
return lhs.fStrike == nullptr;
74-
}
75-
76-
bool operator == (decltype(nullptr), const SkStrikeCache::ExclusiveStrikePtr& rhs) {
77-
return nullptr == rhs.fStrike;
78-
}
79-
80-
SkExclusiveStrikePtr SkStrikeCache::findOrCreateStrikeExclusive(
81-
const SkDescriptor& desc, const SkScalerContextEffects& effects, const SkTypeface& typeface)
82-
{
83-
return SkExclusiveStrikePtr(this->findOrCreateStrike(desc, effects, typeface));
84-
}
85-
8634
auto SkStrikeCache::findOrCreateStrike(const SkDescriptor& desc,
8735
const SkScalerContextEffects& effects,
8836
const SkTypeface& typeface) -> sk_sp<Strike> {
@@ -170,9 +118,9 @@ void SkStrikeCache::DumpMemoryStatistics(SkTraceMemoryDump* dump) {
170118
GlobalStrikeCache()->forEachStrike(visitor);
171119
}
172120

173-
SkExclusiveStrikePtr SkStrikeCache::findStrikeExclusive(const SkDescriptor& desc) {
121+
sk_sp<SkStrike> SkStrikeCache::findStrike(const SkDescriptor& desc) {
174122
SkAutoSpinlock ac(fLock);
175-
return SkExclusiveStrikePtr(this->internalFindStrikeOrNull(desc));
123+
return this->internalFindStrikeOrNull(desc);
176124
}
177125

178126
auto SkStrikeCache::internalFindStrikeOrNull(const SkDescriptor& desc) -> sk_sp<Strike> {
@@ -196,15 +144,13 @@ auto SkStrikeCache::internalFindStrikeOrNull(const SkDescriptor& desc) -> sk_sp<
196144
return sk_ref_sp(strikePtr);
197145
}
198146

199-
SkExclusiveStrikePtr SkStrikeCache::createStrikeExclusive(
147+
sk_sp<SkStrike> SkStrikeCache::createStrike(
200148
const SkDescriptor& desc,
201149
std::unique_ptr<SkScalerContext> scaler,
202150
SkFontMetrics* maybeMetrics,
203-
std::unique_ptr<SkStrikePinner> pinner)
204-
{
151+
std::unique_ptr<SkStrikePinner> pinner) {
205152
SkAutoSpinlock ac(fLock);
206-
return SkExclusiveStrikePtr(
207-
this->internalCreateStrike(desc, std::move(scaler), maybeMetrics, std::move(pinner)));
153+
return this->internalCreateStrike(desc, std::move(scaler), maybeMetrics, std::move(pinner));
208154
}
209155

210156
auto SkStrikeCache::internalCreateStrike(

src/core/SkStrikeCache.h

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -145,38 +145,17 @@ class SkStrikeCache final : public SkStrikeForGPUCacheInterface {
145145
bool fRemoved{false};
146146
}; // Strike
147147

148-
class ExclusiveStrikePtr {
149-
public:
150-
explicit ExclusiveStrikePtr(sk_sp<Strike> strike);
151-
ExclusiveStrikePtr();
152-
ExclusiveStrikePtr(const ExclusiveStrikePtr&) = delete;
153-
ExclusiveStrikePtr& operator = (const ExclusiveStrikePtr&) = delete;
154-
ExclusiveStrikePtr(ExclusiveStrikePtr&&);
155-
ExclusiveStrikePtr& operator = (ExclusiveStrikePtr&&);
156-
157-
Strike* get() const;
158-
Strike* operator -> () const;
159-
Strike& operator * () const;
160-
explicit operator bool () const;
161-
friend bool operator == (const ExclusiveStrikePtr&, const ExclusiveStrikePtr&);
162-
friend bool operator == (const ExclusiveStrikePtr&, decltype(nullptr));
163-
friend bool operator == (decltype(nullptr), const ExclusiveStrikePtr&);
164-
165-
private:
166-
sk_sp<Strike> fStrike;
167-
};
168-
169148
static SkStrikeCache* GlobalStrikeCache();
170149

171-
ExclusiveStrikePtr findStrikeExclusive(const SkDescriptor&) SK_EXCLUDES(fLock);
150+
sk_sp<Strike> findStrike(const SkDescriptor& desc) SK_EXCLUDES(fLock);
172151

173-
ExclusiveStrikePtr createStrikeExclusive(
152+
sk_sp<Strike> createStrike(
174153
const SkDescriptor& desc,
175154
std::unique_ptr<SkScalerContext> scaler,
176155
SkFontMetrics* maybeMetrics = nullptr,
177156
std::unique_ptr<SkStrikePinner> = nullptr) SK_EXCLUDES(fLock);
178157

179-
ExclusiveStrikePtr findOrCreateStrikeExclusive(
158+
sk_sp<Strike> findOrCreateStrike(
180159
const SkDescriptor& desc,
181160
const SkScalerContextEffects& effects,
182161
const SkTypeface& typeface) SK_EXCLUDES(fLock);
@@ -213,10 +192,6 @@ class SkStrikeCache final : public SkStrikeForGPUCacheInterface {
213192
std::unique_ptr<SkScalerContext> scaler,
214193
SkFontMetrics* maybeMetrics = nullptr,
215194
std::unique_ptr<SkStrikePinner> = nullptr) SK_REQUIRES(fLock);
216-
sk_sp<Strike> findOrCreateStrike(
217-
const SkDescriptor& desc,
218-
const SkScalerContextEffects& effects,
219-
const SkTypeface& typeface) SK_EXCLUDES(fLock);
220195

221196
// The following methods can only be called when mutex is already held.
222197
void internalRemoveStrike(Strike* strike) SK_REQUIRES(fLock);
@@ -252,7 +227,6 @@ class SkStrikeCache final : public SkStrikeForGPUCacheInterface {
252227
int32_t fPointSizeLimit{SK_DEFAULT_FONT_CACHE_POINT_SIZE_LIMIT};
253228
};
254229

255-
using SkExclusiveStrikePtr = SkStrikeCache::ExclusiveStrikePtr;
256230
using SkStrike = SkStrikeCache::Strike;
257231

258232
#endif // SkStrikeCache_DEFINED

src/core/SkStrikeSpec.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -231,13 +231,13 @@ SkScopedStrikeForGPU SkStrikeSpec::findOrCreateScopedStrike(SkStrikeForGPUCacheI
231231
return cache->findOrCreateScopedStrike(*fAutoDescriptor.getDesc(), effects, *fTypeface);
232232
}
233233

234-
SkExclusiveStrikePtr SkStrikeSpec::findOrCreateExclusiveStrike(SkStrikeCache* cache) const {
234+
sk_sp<SkStrike> SkStrikeSpec::findOrCreateStrike(SkStrikeCache* cache) const {
235235
SkScalerContextEffects effects{fPathEffect.get(), fMaskFilter.get()};
236-
return cache->findOrCreateStrikeExclusive(*fAutoDescriptor.getDesc(), effects, *fTypeface);
236+
return cache->findOrCreateStrike(*fAutoDescriptor.getDesc(), effects, *fTypeface);
237237
}
238238

239239
SkBulkGlyphMetrics::SkBulkGlyphMetrics(const SkStrikeSpec& spec)
240-
: fStrike{spec.findOrCreateExclusiveStrike()} { }
240+
: fStrike{spec.findOrCreateStrike()} { }
241241

242242
SkSpan<const SkGlyph*> SkBulkGlyphMetrics::glyphs(SkSpan<const SkGlyphID> glyphIDs) {
243243
fGlyphs.reset(glyphIDs.size());
@@ -249,9 +249,9 @@ const SkGlyph* SkBulkGlyphMetrics::glyph(SkGlyphID glyphID) {
249249
}
250250

251251
SkBulkGlyphMetricsAndPaths::SkBulkGlyphMetricsAndPaths(const SkStrikeSpec& spec)
252-
: fStrike{spec.findOrCreateExclusiveStrike()} { }
252+
: fStrike{spec.findOrCreateStrike()} { }
253253

254-
SkBulkGlyphMetricsAndPaths::SkBulkGlyphMetricsAndPaths(SkExclusiveStrikePtr&& strike)
254+
SkBulkGlyphMetricsAndPaths::SkBulkGlyphMetricsAndPaths(sk_sp<SkStrike>&& strike)
255255
: fStrike{std::move(strike)} { }
256256

257257
SkSpan<const SkGlyph*> SkBulkGlyphMetricsAndPaths::glyphs(SkSpan<const SkGlyphID> glyphIDs) {
@@ -272,9 +272,9 @@ void SkBulkGlyphMetricsAndPaths::findIntercepts(
272272
}
273273

274274
SkBulkGlyphMetricsAndImages::SkBulkGlyphMetricsAndImages(const SkStrikeSpec& spec)
275-
: fStrike{spec.findOrCreateExclusiveStrike()} { }
275+
: fStrike{spec.findOrCreateStrike()} { }
276276

277-
SkBulkGlyphMetricsAndImages::SkBulkGlyphMetricsAndImages(SkExclusiveStrikePtr&& strike)
277+
SkBulkGlyphMetricsAndImages::SkBulkGlyphMetricsAndImages(sk_sp<SkStrike>&& strike)
278278
: fStrike{std::move(strike)} { }
279279

280280
SkSpan<const SkGlyph*> SkBulkGlyphMetricsAndImages::glyphs(SkSpan<const SkPackedGlyphID> glyphIDs) {

src/core/SkStrikeSpec.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class SkStrikeSpec {
7474

7575
SkScopedStrikeForGPU findOrCreateScopedStrike(SkStrikeForGPUCacheInterface* cache) const;
7676

77-
SkExclusiveStrikePtr findOrCreateExclusiveStrike(
77+
sk_sp<SkStrike> findOrCreateStrike(
7878
SkStrikeCache* cache = SkStrikeCache::GlobalStrikeCache()) const;
7979

8080
SkScalar strikeToSourceRatio() const { return fStrikeToSourceRatio; }
@@ -106,13 +106,13 @@ class SkBulkGlyphMetrics {
106106
private:
107107
static constexpr int kTypicalGlyphCount = 20;
108108
SkAutoSTArray<kTypicalGlyphCount, const SkGlyph*> fGlyphs;
109-
SkExclusiveStrikePtr fStrike;
109+
sk_sp<SkStrike> fStrike;
110110
};
111111

112112
class SkBulkGlyphMetricsAndPaths {
113113
public:
114114
explicit SkBulkGlyphMetricsAndPaths(const SkStrikeSpec& spec);
115-
explicit SkBulkGlyphMetricsAndPaths(SkExclusiveStrikePtr&& strike);
115+
explicit SkBulkGlyphMetricsAndPaths(sk_sp<SkStrike>&& strike);
116116
SkSpan<const SkGlyph*> glyphs(SkSpan<const SkGlyphID> glyphIDs);
117117
const SkGlyph* glyph(SkGlyphID glyphID);
118118
void findIntercepts(const SkScalar bounds[2], SkScalar scale, SkScalar xPos,
@@ -121,22 +121,21 @@ class SkBulkGlyphMetricsAndPaths {
121121
private:
122122
static constexpr int kTypicalGlyphCount = 20;
123123
SkAutoSTArray<kTypicalGlyphCount, const SkGlyph*> fGlyphs;
124-
SkExclusiveStrikePtr fStrike;
124+
sk_sp<SkStrike> fStrike;
125125
};
126126

127127
class SkBulkGlyphMetricsAndImages {
128128
public:
129129
explicit SkBulkGlyphMetricsAndImages(const SkStrikeSpec& spec);
130-
explicit SkBulkGlyphMetricsAndImages(SkExclusiveStrikePtr&& strike);
130+
explicit SkBulkGlyphMetricsAndImages(sk_sp<SkStrike>&& strike);
131131
SkSpan<const SkGlyph*> glyphs(SkSpan<const SkPackedGlyphID> packedIDs);
132132
const SkGlyph* glyph(SkPackedGlyphID packedID);
133133
const SkDescriptor& descriptor() const;
134134

135-
136135
private:
137136
static constexpr int kTypicalGlyphCount = 64;
138137
SkAutoSTArray<kTypicalGlyphCount, const SkGlyph*> fGlyphs;
139-
SkExclusiveStrikePtr fStrike;
138+
sk_sp<SkStrike> fStrike;
140139
};
141140

142141
#endif // SkStrikeSpec_DEFINED

src/pdf/SkPDFFont.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -539,11 +539,11 @@ static void emit_subset_type3(const SkPDFFont& pdfFont, SkPDFDocument* doc) {
539539
}
540540
int unitsPerEm;
541541
SkStrikeSpec strikeSpec = SkStrikeSpec::MakePDFVector(*typeface, &unitsPerEm);
542-
auto cache = strikeSpec.findOrCreateExclusiveStrike();
543-
SkASSERT(cache);
542+
auto strike = strikeSpec.findOrCreateStrike();
543+
SkASSERT(strike);
544544
SkScalar emSize = (SkScalar)unitsPerEm;
545-
SkScalar xHeight = cache->getFontMetrics().fXHeight;
546-
SkBulkGlyphMetricsAndPaths metricsAndPaths(std::move(cache));
545+
SkScalar xHeight = strike->getFontMetrics().fXHeight;
546+
SkBulkGlyphMetricsAndPaths metricsAndPaths(std::move(strike));
547547

548548
SkStrikeSpec strikeSpecSmall = kBitmapFontSize > 0 ? make_small_strike(*typeface)
549549
: strikeSpec;

0 commit comments

Comments
 (0)