use SkAutoTDelete instead of SkTScopedPtr
Review URL: https://codereview.chromium.org/13831011
git-svn-id: http://skia.googlecode.com/svn/trunk@8749 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/GrMemoryPoolBench.cpp b/bench/GrMemoryPoolBench.cpp
index 29c0893..dccf827 100644
--- a/bench/GrMemoryPoolBench.cpp
+++ b/bench/GrMemoryPoolBench.cpp
@@ -11,8 +11,8 @@
#include "GrMemoryPool.h"
#include "SkBenchmark.h"
#include "SkRandom.h"
-#include "SkTScopedPtr.h"
#include "SkTDArray.h"
+#include "SkTemplates.h"
// change this to 0 to compare GrMemoryPool to default new / delete
#define OVERRIDE_NEW 1
@@ -107,14 +107,14 @@
enum {
kMaxObjects = 4 * (1 << 10),
};
- SkTScopedPtr<A> objects[kMaxObjects];
+ SkAutoTDelete<A> objects[kMaxObjects];
for (int i = 0; i < N; i++) {
uint32_t idx = r.nextRangeU(0, kMaxObjects-1);
if (NULL == objects[idx].get()) {
objects[idx].reset(new A);
} else {
- objects[idx].reset(NULL);
+ objects[idx].free();
}
}
}
diff --git a/include/core/SkTemplates.h b/include/core/SkTemplates.h
index c4ba0e6..9078bd2 100644
--- a/include/core/SkTemplates.h
+++ b/include/core/SkTemplates.h
@@ -80,16 +80,22 @@
T* fObj;
};
-// See also SkTScopedPtr.
template <typename T> class SkAutoTDelete : SkNoncopyable {
public:
- SkAutoTDelete(T* obj) : fObj(obj) {}
+ SkAutoTDelete(T* obj = NULL) : fObj(obj) {}
~SkAutoTDelete() { delete fObj; }
T* get() const { return fObj; }
T& operator*() const { SkASSERT(fObj); return *fObj; }
T* operator->() const { SkASSERT(fObj); return fObj; }
+ void reset(T* obj) {
+ if (fObj != obj) {
+ delete fObj;
+ fObj = obj;
+ }
+ }
+
/**
* Delete the owned object, setting the internal pointer to NULL.
*/
diff --git a/tests/GrMemoryPoolTest.cpp b/tests/GrMemoryPoolTest.cpp
index 73f26a9..0ed77bf 100644
--- a/tests/GrMemoryPoolTest.cpp
+++ b/tests/GrMemoryPoolTest.cpp
@@ -11,7 +11,7 @@
#include "GrMemoryPool.h"
#include "SkRandom.h"
#include "SkTDArray.h"
-#include "SkTScopedPtr.h"
+#include "SkTemplates.h"
#include "SkInstCnt.h"
namespace {
@@ -65,11 +65,11 @@
}
private:
- static SkTScopedPtr<GrMemoryPool> gPool;
+ static SkAutoTDelete<GrMemoryPool> gPool;
char fChar;
};
SK_DEFINE_INST_COUNT(A);
-SkTScopedPtr<GrMemoryPool> A::gPool;
+SkAutoTDelete<GrMemoryPool> A::gPool;
class B : public A {
public: