remove SkRefCnt safeRef() and safeUnref(), and replace the call-sites with
SkSafeRef() and SkSafeUnref().

This is basically a bug waiting to happen. An optimizing compiler can remove
checks for null on "this" if it chooses. However, SkRefCnt::safeRef() relies on
precisely this check...

void SkRefCnt::safeRef() {
    if (this) {
        this->ref();
    }
}

Since a compiler might skip the if-clause, it breaks the intention of this
method, hence its removal.

static inline void SkSafeRef(SkRefCnt* obj) {
    if (obj) {
        obj->ref();
    }
}

This form is not ignored by an optimizing compile, so we use it instead.




git-svn-id: http://skia.googlecode.com/svn/trunk@762 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleVertices.cpp b/samplecode/SampleVertices.cpp
index 96fa0da..7f5aa96 100644
--- a/samplecode/SampleVertices.cpp
+++ b/samplecode/SampleVertices.cpp
@@ -21,7 +21,7 @@
 
 static SkShader* make_shader0(SkIPoint* size) {
     SkBitmap    bm;
-    
+
     SkImageDecoder::DecodeFile("/skimages/logo.png", &bm);
     size->set(bm.width(), bm.height());
     return SkShader::CreateBitmapShader(bm, SkShader::kClamp_TileMode,
@@ -39,25 +39,25 @@
     SkShader*   fShader0;
     SkShader*   fShader1;
 
-public:    
+public:
 	VerticesView() {
         SkIPoint    size;
-        
+
         fShader0 = make_shader0(&size);
         fShader1 = make_shader1(size);
 
         make_strip(&fRecs[0], size.fX, size.fY);
         make_fan(&fRecs[1], size.fX, size.fY);
         make_tris(&fRecs[2]);
-        
+
         fScale = SK_Scalar1;
     }
-    
+
     virtual ~VerticesView() {
-        fShader0->safeUnref();
-        fShader1->safeUnref();
+        SkSafeUnref(fShader0);
+        SkSafeUnref(fShader1);
     }
-    
+
 protected:
     // overrides from SkEventSink
     virtual bool onQuery(SkEvent* evt)  {
@@ -69,65 +69,65 @@
         }
         return this->INHERITED::onQuery(evt);
     }
-    
+
     void drawBG(SkCanvas* canvas) {
         canvas->drawColor(SK_ColorGRAY);
     }
-    
+
     SkScalar fScale;
-    
+
     virtual void onDraw(SkCanvas* canvas) {
         this->drawBG(canvas);
-        
+
         SkPaint paint;
         paint.setDither(true);
         paint.setFilterBitmap(true);
-        
+
         for (int i = 0; i < SK_ARRAY_COUNT(fRecs); i++) {
             canvas->save();
-            
+
             paint.setShader(NULL);
             canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
                                  fRecs[i].fVerts, fRecs[i].fTexs,
                                  NULL, NULL, NULL, 0, paint);
-            
+
             canvas->translate(SkIntToScalar(250), 0);
-            
+
             paint.setShader(fShader0);
             canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
                                  fRecs[i].fVerts, fRecs[i].fTexs,
                                  NULL, NULL, NULL, 0, paint);
 
             canvas->translate(SkIntToScalar(250), 0);
-            
+
             paint.setShader(fShader1);
             canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
                                  fRecs[i].fVerts, fRecs[i].fTexs,
                                  NULL, NULL, NULL, 0, paint);
             canvas->restore();
-            
+
             canvas->translate(0, SkIntToScalar(250));
         }
     }
-    
+
     virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) {
         return new Click(this);
     }
-    
+
     virtual bool onClick(Click* click) {
     //    fCurrX = click->fICurr.fX;
     //    fCurrY = click->fICurr.fY;
         this->inval(NULL);
         return true;
     }
-    
+
 private:
     struct Rec {
         SkCanvas::VertexMode    fMode;
         int                     fCount;
         SkPoint*                fVerts;
         SkPoint*                fTexs;
-        
+
         Rec() : fCount(0), fVerts(NULL), fTexs(NULL) {}
         ~Rec() { delete[] fVerts; delete[] fTexs; }
     };
@@ -135,11 +135,11 @@
     void make_tris(Rec* rec) {
         int n = 10;
         SkRandom    rand;
-        
+
         rec->fMode = SkCanvas::kTriangles_VertexMode;
         rec->fCount = n * 3;
         rec->fVerts = new SkPoint[rec->fCount];
-        
+
         for (int i = 0; i < n; i++) {
             SkPoint* v = &rec->fVerts[i*3];
             for (int j = 0; j < 3; j++) {
@@ -147,17 +147,17 @@
             }
         }
     }
-    
+
     void make_fan(Rec* rec, int texWidth, int texHeight) {
         const SkScalar tx = SkIntToScalar(texWidth);
         const SkScalar ty = SkIntToScalar(texHeight);
         const int n = 24;
-        
+
         rec->fMode = SkCanvas::kTriangleFan_VertexMode;
         rec->fCount = n + 2;
         rec->fVerts = new SkPoint[rec->fCount];
         rec->fTexs  = new SkPoint[rec->fCount];
-        
+
         SkPoint* v = rec->fVerts;
         SkPoint* t = rec->fTexs;
 
@@ -171,47 +171,47 @@
         }
         v[n+1] = v[1];
         t[n+1].set(tx, ty);
-        
+
         SkMatrix m;
         m.setScale(SkIntToScalar(100), SkIntToScalar(100));
         m.postTranslate(SkIntToScalar(110), SkIntToScalar(110));
         m.mapPoints(v, rec->fCount);
     }
-    
+
     void make_strip(Rec* rec, int texWidth, int texHeight) {
         const SkScalar tx = SkIntToScalar(texWidth);
         const SkScalar ty = SkIntToScalar(texHeight);
         const int n = 24;
-        
+
         rec->fMode = SkCanvas::kTriangleStrip_VertexMode;
         rec->fCount = 2 * (n + 1);
         rec->fVerts = new SkPoint[rec->fCount];
         rec->fTexs  = new SkPoint[rec->fCount];
-        
+
         SkPoint* v = rec->fVerts;
         SkPoint* t = rec->fTexs;
-        
+
         for (int i = 0; i < n; i++) {
             SkScalar cos;
             SkScalar sin = SkScalarSinCos(SK_ScalarPI * 2 * i / n, &cos);
             v[i*2 + 0].set(cos/2, sin/2);
             v[i*2 + 1].set(cos, sin);
-            
+
             t[i*2 + 0].set(tx * i / n, ty);
             t[i*2 + 1].set(tx * i / n, 0);
         }
         v[2*n + 0] = v[0];
         v[2*n + 1] = v[1];
-        
+
         t[2*n + 0].set(tx, ty);
         t[2*n + 1].set(tx, 0);
-        
+
         SkMatrix m;
         m.setScale(SkIntToScalar(100), SkIntToScalar(100));
         m.postTranslate(SkIntToScalar(110), SkIntToScalar(110));
         m.mapPoints(v, rec->fCount);
     }
-    
+
     Rec fRecs[3];
 
     typedef SkView INHERITED;