|
17 | 17 | #include "include/core/SkRRect.h"
|
18 | 18 | #include "include/core/SkRect.h"
|
19 | 19 | #include "include/private/base/SkMacros.h"
|
| 20 | +#include "include/private/base/SkOnce.h" |
20 | 21 | #include "include/private/gpu/ganesh/GrTypesPriv.h"
|
21 | 22 | #include "src/base/SkRandom.h"
|
22 | 23 | #include "src/core/SkRectPriv.h"
|
@@ -325,33 +326,34 @@ SkPathEffect::DashType TestDashPathEffect::onAsADash(DashInfo* info) const {
|
325 | 326 |
|
326 | 327 | sk_sp<SkColorSpace> TestColorSpace(SkRandom* random) {
|
327 | 328 | static sk_sp<SkColorSpace> gColorSpaces[3];
|
328 |
| - static bool gOnce; |
329 |
| - if (!gOnce) { |
330 |
| - gOnce = true; |
| 329 | + static SkOnce once; |
| 330 | + once([] { |
331 | 331 | // No color space (legacy mode)
|
332 | 332 | gColorSpaces[0] = nullptr;
|
333 | 333 | // sRGB or color-spin sRGB
|
334 |
| - gColorSpaces[1] = SkColorSpace::MakeSRGB(); |
335 |
| - gColorSpaces[2] = SkColorSpace::MakeSRGB()->makeColorSpin(); |
336 |
| - } |
337 |
| - return gColorSpaces[random->nextULessThan(static_cast<uint32_t>(std::size(gColorSpaces)))]; |
| 334 | + gColorSpaces[1] = SkColorSpace::MakeSRGB().release(); |
| 335 | + gColorSpaces[2] = SkColorSpace::MakeSRGB()->makeColorSpin().release(); |
| 336 | + }); |
| 337 | + return sk_ref_sp( |
| 338 | + gColorSpaces[random->nextULessThan(static_cast<uint32_t>(std::size(gColorSpaces)))]); |
338 | 339 | }
|
339 | 340 |
|
340 | 341 | sk_sp<GrColorSpaceXform> TestColorXform(SkRandom* random) {
|
341 | 342 | // TODO: Add many more kinds of xforms here
|
342 | 343 | static sk_sp<GrColorSpaceXform> gXforms[3];
|
343 |
| - static bool gOnce; |
344 |
| - if (!gOnce) { |
345 |
| - gOnce = true; |
| 344 | + static SkOnce once; |
| 345 | + once([] { |
346 | 346 | sk_sp<SkColorSpace> srgb = SkColorSpace::MakeSRGB();
|
347 | 347 | sk_sp<SkColorSpace> spin = SkColorSpace::MakeSRGB()->makeColorSpin();
|
348 | 348 | // No gamut change
|
349 | 349 | gXforms[0] = nullptr;
|
350 |
| - gXforms[1] = GrColorSpaceXform::Make(srgb.get(), kPremul_SkAlphaType, |
351 |
| - spin.get(), kPremul_SkAlphaType); |
352 |
| - gXforms[2] = GrColorSpaceXform::Make(spin.get(), kPremul_SkAlphaType, |
353 |
| - srgb.get(), kPremul_SkAlphaType); |
354 |
| - } |
| 350 | + gXforms[1] = GrColorSpaceXform::Make( |
| 351 | + srgb.get(), kPremul_SkAlphaType, spin.get(), kPremul_SkAlphaType) |
| 352 | + .release(); |
| 353 | + gXforms[2] = GrColorSpaceXform::Make( |
| 354 | + spin.get(), kPremul_SkAlphaType, srgb.get(), kPremul_SkAlphaType) |
| 355 | + .release(); |
| 356 | + }); |
355 | 357 | return gXforms[random->nextULessThan(static_cast<uint32_t>(std::size(gXforms)))];
|
356 | 358 | }
|
357 | 359 |
|
|
0 commit comments