| Index: src/core/SkMatrix.cpp
|
| diff --git a/src/core/SkMatrix.cpp b/src/core/SkMatrix.cpp
|
| index 8778f78f4105f833a7cb10f5cb48b137f625a1b2..40f6e5298d9375df55a8822b2a0c2372b1b0f116 100644
|
| --- a/src/core/SkMatrix.cpp
|
| +++ b/src/core/SkMatrix.cpp
|
| @@ -7,7 +7,7 @@
|
|
|
| #include "SkMatrix.h"
|
| #include "SkFloatBits.h"
|
| -#include "SkLazyPtr.h"
|
| +#include "SkOnce.h"
|
| #include "SkString.h"
|
|
|
| // In a few places, we performed the following
|
| @@ -1558,33 +1558,29 @@
|
| return get_scale_factor<kBoth_MinMaxOrBoth>(this->getType(), fMat, scaleFactors);
|
| }
|
|
|
| -namespace {
|
| -
|
| -SkMatrix* create_identity() {
|
| - SkMatrix* m = SkNEW(SkMatrix);
|
| - m->reset();
|
| - return m;
|
| -}
|
| -
|
| -SkMatrix* create_invalid() {
|
| - SkMatrix* m = SkNEW(SkMatrix);
|
| - m->setAll(SK_ScalarMax, SK_ScalarMax, SK_ScalarMax,
|
| - SK_ScalarMax, SK_ScalarMax, SK_ScalarMax,
|
| - SK_ScalarMax, SK_ScalarMax, SK_ScalarMax);
|
| - m->getType(); // Force the type to be computed.
|
| - return m;
|
| -}
|
| -
|
| -} // namespace
|
| +static void reset_identity_matrix(SkMatrix* identity) {
|
| + identity->reset();
|
| +}
|
|
|
| const SkMatrix& SkMatrix::I() {
|
| - SK_DECLARE_STATIC_LAZY_PTR(SkMatrix, identity, create_identity);
|
| - return *identity.get();
|
| + // If you can use C++11 now, you might consider replacing this with a constexpr constructor.
|
| + static SkMatrix gIdentity;
|
| + SK_DECLARE_STATIC_ONCE(once);
|
| + SkOnce(&once, reset_identity_matrix, &gIdentity);
|
| + return gIdentity;
|
| }
|
|
|
| const SkMatrix& SkMatrix::InvalidMatrix() {
|
| - SK_DECLARE_STATIC_LAZY_PTR(SkMatrix, invalid, create_invalid);
|
| - return *invalid.get();
|
| + static SkMatrix gInvalid;
|
| + static bool gOnce;
|
| + if (!gOnce) {
|
| + gInvalid.setAll(SK_ScalarMax, SK_ScalarMax, SK_ScalarMax,
|
| + SK_ScalarMax, SK_ScalarMax, SK_ScalarMax,
|
| + SK_ScalarMax, SK_ScalarMax, SK_ScalarMax);
|
| + gInvalid.getType(); // force the type to be computed
|
| + gOnce = true;
|
| + }
|
| + return gInvalid;
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|