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
diff --git a/samplecode/SampleLayers.cpp b/samplecode/SampleLayers.cpp
index 8666745..e6867bb 100644
--- a/samplecode/SampleLayers.cpp
+++ b/samplecode/SampleLayers.cpp
@@ -149,12 +149,26 @@
     }
     
     void drawBG(SkCanvas* canvas) {
-        canvas->drawColor(SK_ColorWHITE);
+        canvas->drawColor(SK_ColorGRAY);
     }
     
     virtual void onDraw(SkCanvas* canvas) {
         this->drawBG(canvas);
         
+        if (true) {
+            SkRect r;
+			r.set(SkIntToScalar(0), SkIntToScalar(0),
+				  SkIntToScalar(220), SkIntToScalar(120));
+            SkPaint p;
+            canvas->saveLayer(&r, &p);
+            canvas->drawColor(0xFFFF0000);
+            p.setAlpha(1);  // or 0
+            p.setPorterDuffXfermode(SkPorterDuff::kSrc_Mode);
+            canvas->drawOval(r, p);
+            canvas->restore();
+            return;
+        }
+        
         if (false) {
             SkRect r;
 			r.set(SkIntToScalar(0), SkIntToScalar(0),
diff --git a/samplecode/SamplePicture.cpp b/samplecode/SamplePicture.cpp
index dfc1555..8ebb566 100644
--- a/samplecode/SamplePicture.cpp
+++ b/samplecode/SamplePicture.cpp
@@ -91,13 +91,13 @@
         this->drawBG(canvas);
 
         drawSomething(canvas);
-        
+
         SkPicture* pict = new SkPicture;
         SkAutoUnref aur(pict);
 
         drawSomething(pict->beginRecording(100, 100));
         pict->endRecording();
-        
+    
         canvas->save();
         canvas->translate(SkIntToScalar(300), SkIntToScalar(50));
         canvas->scale(-SK_Scalar1, -SK_Scalar1);