Index: include/core/SkTRegistry.h |
diff --git a/include/core/SkTRegistry.h b/include/core/SkTRegistry.h |
index 34fcffd5c51374cd422395fa7e547c287666a3b7..0994c990dccbe8625d59f06c705925ff2889cb21 100644 |
--- a/include/core/SkTRegistry.h |
+++ b/include/core/SkTRegistry.h |
@@ -16,11 +16,11 @@ |
and provides a function-pointer. This can be used to auto-register a set of |
services, e.g. a set of image codecs. |
*/ |
-template <typename T, typename P> class SkTRegistry : SkNoncopyable { |
+template <typename T> class SkTRegistry : SkNoncopyable { |
public: |
- typedef T (*Factory)(P); |
+ typedef T Factory; |
- SkTRegistry(Factory fact) { |
+ explicit SkTRegistry(T fact) : fFact(fact) { |
#ifdef SK_BUILD_FOR_ANDROID |
// work-around for double-initialization bug |
{ |
@@ -33,15 +33,14 @@ public: |
} |
} |
#endif |
- fFact = fact; |
fChain = gHead; |
- gHead = this; |
+ gHead = this; |
} |
static const SkTRegistry* Head() { return gHead; } |
const SkTRegistry* next() const { return fChain; } |
- Factory factory() const { return fFact; } |
+ const Factory& factory() const { return fFact; } |
private: |
Factory fFact; |
@@ -51,6 +50,6 @@ private: |
}; |
// The caller still needs to declare an instance of this somewhere |
-template <typename T, typename P> SkTRegistry<T, P>* SkTRegistry<T, P>::gHead; |
+template <typename T> SkTRegistry<T>* SkTRegistry<T>::gHead; |
#endif |