aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--bench/GrMemoryPoolBench.cpp6
-rw-r--r--include/core/SkTemplates.h10
-rw-r--r--tests/GrMemoryPoolTest.cpp6
3 files changed, 14 insertions, 8 deletions
diff --git a/bench/GrMemoryPoolBench.cpp b/bench/GrMemoryPoolBench.cpp
index 29c0893f92..dccf8278f5 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 @@ protected:
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 c4ba0e676a..9078bd2036 100644
--- a/include/core/SkTemplates.h
+++ b/include/core/SkTemplates.h
@@ -80,16 +80,22 @@ private:
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 73f26a9b2e..0ed77bf5b1 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 @@ public:
}
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: