diff options
author | reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2009-05-22 14:39:03 +0000 |
---|---|---|
committer | reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2009-05-22 14:39:03 +0000 |
commit | 149e2f6159a797989f6f0fa93ecfaa66cdd55c40 (patch) | |
tree | e18aa43250c3dbd90c8e14d351ec0ea760f83567 /include | |
parent | ba974ccbdd7e82df46166a97741b53f074a525b6 (diff) |
add SkSafeRef / SkSafeUnref as inline static functions, to use in place of our
existing obj->safeRef(), which is unsafe since it can its 'if (this)' can be
optimized away by some compilers.
fix some overflows in mimpmap generation
git-svn-id: http://skia.googlecode.com/svn/trunk@181 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include')
-rw-r--r-- | include/core/SkRefCnt.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/core/SkRefCnt.h b/include/core/SkRefCnt.h index adb59ddc18..7e325e0002 100644 --- a/include/core/SkRefCnt.h +++ b/include/core/SkRefCnt.h @@ -130,5 +130,22 @@ private: dst = src; \ } while (0) + +/** Check if the argument is non-null, and if so, call obj->ref() + */ +template <typename T> static inline void SkSafeRef(T* obj) { + if (obj) { + obj->ref(); + } +} + +/** Check if the argument is non-null, and if so, call obj->unref() + */ +template <typename T> static inline void SkSafeUnref(T* obj) { + if (obj) { + obj->unref(); + } +} + #endif |