use SkAutoTDelete instead of SkTScopedPtr
authorreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 18 Apr 2013 18:43:26 +0000 (18:43 +0000)
committerreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 18 Apr 2013 18:43:26 +0000 (18:43 +0000)
Review URL: https://codereview.chromium.org/13831011

git-svn-id: http://skia.googlecode.com/svn/trunk@8749 2bbb7eff-a529-9590-31e7-b0007b416f81

bench/GrMemoryPoolBench.cpp
include/core/SkTemplates.h
tests/GrMemoryPoolTest.cpp

index 29c0893..dccf827 100644 (file)
@@ -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();
             }
         }
     }
index c4ba0e6..9078bd2 100644 (file)
@@ -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.
      */
index 73f26a9..0ed77bf 100644 (file)
@@ -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: