aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Ben Wagner <bungeman@google.com>2018-05-14 13:51:10 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-14 19:25:10 +0000
commita20681c2ac9d1a36875289b6207cbcd3a36132f7 (patch)
tree6e9b7c9cf13554ebf0129cf7f4766998f0b1c375
parent8803ebb470e73a5738cd09c48adbafec062229a8 (diff)
Move SkFontConfigInterface to smart pointers.
This old interface may be easier to move away from if it isn't so difficult to understand. Change-Id: Ib04b00e55fd5c11aca8cc70bc6c7b0b5ba98dcae Reviewed-on: https://skia-review.googlesource.com/127969 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
-rw-r--r--include/ports/SkFontConfigInterface.h7
-rw-r--r--src/ports/SkFontConfigInterface.cpp16
2 files changed, 14 insertions, 9 deletions
diff --git a/include/ports/SkFontConfigInterface.h b/include/ports/SkFontConfigInterface.h
index c6b7b78628..bb7eebe5d5 100644
--- a/include/ports/SkFontConfigInterface.h
+++ b/include/ports/SkFontConfigInterface.h
@@ -29,13 +29,12 @@ public:
* unref(). The default SkFontConfigInterface is the result of calling
* GetSingletonDirectInterface.
*/
- static SkFontConfigInterface* RefGlobal();
+ static sk_sp<SkFontConfigInterface> RefGlobal();
/**
- * Replace the current global instance with the specified one, safely
- * ref'ing the new instance, and unref'ing the previous. Returns its
- * parameter (the new global instance).
+ * Replace the current global instance with the specified one.
*/
+ static void SetGlobal(sk_sp<SkFontConfigInterface> fc);
static SkFontConfigInterface* SetGlobal(SkFontConfigInterface*);
/**
diff --git a/src/ports/SkFontConfigInterface.cpp b/src/ports/SkFontConfigInterface.cpp
index 5b8731c3d0..a30bd2dac2 100644
--- a/src/ports/SkFontConfigInterface.cpp
+++ b/src/ports/SkFontConfigInterface.cpp
@@ -11,20 +11,26 @@
#include "SkRefCnt.h"
SK_DECLARE_STATIC_MUTEX(gFontConfigInterfaceMutex);
-static SkFontConfigInterface* gFontConfigInterface;
+static sk_sp<SkFontConfigInterface> gFontConfigInterface(nullptr);
-SkFontConfigInterface* SkFontConfigInterface::RefGlobal() {
+sk_sp<SkFontConfigInterface> SkFontConfigInterface::RefGlobal() {
SkAutoMutexAcquire ac(gFontConfigInterfaceMutex);
if (gFontConfigInterface) {
- return SkRef(gFontConfigInterface);
+ return gFontConfigInterface;
}
- return SkSafeRef(SkFontConfigInterface::GetSingletonDirectInterface());
+ return sk_ref_sp(SkFontConfigInterface::GetSingletonDirectInterface());
}
SkFontConfigInterface* SkFontConfigInterface::SetGlobal(SkFontConfigInterface* fc) {
SkAutoMutexAcquire ac(gFontConfigInterfaceMutex);
- SkRefCnt_SafeAssign(gFontConfigInterface, fc);
+ gFontConfigInterface = sk_ref_sp(fc);
return fc;
}
+
+void SkFontConfigInterface::SetGlobal(sk_sp<SkFontConfigInterface> fc) {
+ SkAutoMutexAcquire ac(gFontConfigInterfaceMutex);
+
+ gFontConfigInterface = std::move(fc);
+}