diff options
author | Mathias Agopian <mathias@google.com> | 2011-06-15 20:41:24 -0700 |
---|---|---|
committer | Alex Ray <aray@google.com> | 2013-07-30 13:56:57 -0700 |
commit | 267ba69c2e4ae39b9fe98d4be592c7b59e7e57a1 (patch) | |
tree | ec1160244d799eab869ab7f65aabe26943df4ef2 /include | |
parent | dace0b45d00814dda275d81b82c1673dd88cf3e9 (diff) | |
download | core-267ba69c2e4ae39b9fe98d4be592c7b59e7e57a1.tar.gz core-267ba69c2e4ae39b9fe98d4be592c7b59e7e57a1.tar.bz2 core-267ba69c2e4ae39b9fe98d4be592c7b59e7e57a1.zip |
Revert "revert surfaceflinger leak fix as it uncovered a crasher on xoom"
This reverts commit af6edba59e250adbdfa5b3c3be134f70d8c38a16.
Change-Id: I7793d3ca8a4d20a2b188364f47854328ab5f586d
Diffstat (limited to 'include')
-rw-r--r-- | include/utils/RefBase.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/utils/RefBase.h b/include/utils/RefBase.h index a21a18bda..ca170827f 100644 --- a/include/utils/RefBase.h +++ b/include/utils/RefBase.h @@ -116,6 +116,20 @@ public: typedef RefBase basetype; + // used to override the RefBase destruction. + class Destroyer { + friend class RefBase; + friend class weakref_type; + public: + virtual ~Destroyer(); + private: + virtual void destroy(RefBase const* base) = 0; + }; + + // Make sure to never acquire a strong reference from this function. The + // same restrictions than for destructors apply. + void setDestroyer(Destroyer* destroyer); + protected: RefBase(); virtual ~RefBase(); |