Skia Merge (revision 808)

This is a companion CL to the one found in /external/skia

Change-Id: If81748545435cab20a5d8479329ab333cb973e16
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index 41baca2..2ed938a 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -183,7 +183,6 @@
 	libgui \
 	libsurfaceflinger_client \
 	libcamera_client \
-	libskiagl \
 	libskia \
 	libsqlite \
 	libdvm \
diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp
index 1d961ec..4833df1 100644
--- a/core/jni/android/graphics/Bitmap.cpp
+++ b/core/jni/android/graphics/Bitmap.cpp
@@ -378,12 +378,12 @@
 

     jbyteArray buffer = GraphicsJNI::allocateJavaPixelRef(env, bitmap, ctable);

     if (NULL == buffer) {

-        ctable->safeUnref();

+        SkSafeUnref(ctable);

         delete bitmap;

         return NULL;

     }

 

-    ctable->safeUnref();

+    SkSafeUnref(ctable);

 

     size_t size = bitmap->getSize();

     bitmap->lockPixels();

diff --git a/core/jni/android/graphics/Canvas.cpp b/core/jni/android/graphics/Canvas.cpp
index 8944d47..0cdb357 100644
--- a/core/jni/android/graphics/Canvas.cpp
+++ b/core/jni/android/graphics/Canvas.cpp
@@ -673,7 +673,7 @@
         }
         SkShader* shader = SkShader::CreateBitmapShader(*bitmap,
                         SkShader::kClamp_TileMode, SkShader::kClamp_TileMode);
-        tmpPaint.setShader(shader)->safeUnref();
+        SkSafeUnref(tmpPaint.setShader(shader));
 
         canvas->drawVertices(SkCanvas::kTriangles_VertexMode, ptCount, verts,
                              texs, (const SkColor*)colorA.ptr(), NULL, indices,
diff --git a/core/jni/android/graphics/ColorFilter.cpp b/core/jni/android/graphics/ColorFilter.cpp
index e2a959d..dd1177b 100644
--- a/core/jni/android/graphics/ColorFilter.cpp
+++ b/core/jni/android/graphics/ColorFilter.cpp
@@ -33,7 +33,7 @@
 class SkColorFilterGlue {
 public:
     static void finalizer(JNIEnv* env, jobject clazz, SkColorFilter* obj, SkiaColorFilter* f) {
-        obj->safeUnref();
+        SkSafeUnref(obj);
         // f == NULL when not !USE_OPENGL_RENDERER, so no need to delete outside the ifdef
 #ifdef USE_OPENGL_RENDERER
         if (android::uirenderer::Caches::hasInstance()) {
diff --git a/core/jni/android/graphics/DrawFilter.cpp b/core/jni/android/graphics/DrawFilter.cpp
index 496e712..2f9fe7e 100644
--- a/core/jni/android/graphics/DrawFilter.cpp
+++ b/core/jni/android/graphics/DrawFilter.cpp
@@ -34,7 +34,7 @@
 public:
 
     static void finalizer(JNIEnv* env, jobject clazz, SkDrawFilter* obj) {
-        obj->safeUnref();
+        SkSafeUnref(obj);
     }
 
     static SkDrawFilter* CreatePaintFlagsDF(JNIEnv* env, jobject clazz,
diff --git a/core/jni/android/graphics/MaskFilter.cpp b/core/jni/android/graphics/MaskFilter.cpp
index 455449e..d3f9b78 100644
--- a/core/jni/android/graphics/MaskFilter.cpp
+++ b/core/jni/android/graphics/MaskFilter.cpp
@@ -14,7 +14,7 @@
 class SkMaskFilterGlue {
 public:
     static void destructor(JNIEnv* env, jobject, SkMaskFilter* filter) {
-        filter->safeUnref();
+        SkSafeUnref(filter);
     }
 
     static SkMaskFilter* createBlur(JNIEnv* env, jobject, float radius, int blurStyle) {
diff --git a/core/jni/android/graphics/PathEffect.cpp b/core/jni/android/graphics/PathEffect.cpp
index 0ecb004..cfa9ce4 100644
--- a/core/jni/android/graphics/PathEffect.cpp
+++ b/core/jni/android/graphics/PathEffect.cpp
@@ -12,7 +12,7 @@
 public:
 
     static void destructor(JNIEnv* env, jobject, SkPathEffect* effect) {
-        effect->safeUnref();
+        SkSafeUnref(effect);
     }
 
     static SkPathEffect* Compose_constructor(JNIEnv* env, jobject,
diff --git a/core/jni/android/graphics/Rasterizer.cpp b/core/jni/android/graphics/Rasterizer.cpp
index db70b57..4e1b36a 100644
--- a/core/jni/android/graphics/Rasterizer.cpp
+++ b/core/jni/android/graphics/Rasterizer.cpp
@@ -32,7 +32,7 @@
 public:
 
     static void finalizer(JNIEnv* env, jobject clazz, SkRasterizer* obj) {
-        obj->safeUnref();
+        SkSafeUnref(obj);
     }
  
 };
diff --git a/core/jni/android/graphics/Shader.cpp b/core/jni/android/graphics/Shader.cpp
index 3efc41d..0ea8225 100644
--- a/core/jni/android/graphics/Shader.cpp
+++ b/core/jni/android/graphics/Shader.cpp
@@ -53,7 +53,7 @@
 
 static void Shader_destructor(JNIEnv* env, jobject o, SkShader* shader, SkiaShader* skiaShader)
 {
-    shader->safeUnref();
+    SkSafeUnref(shader);
     // skiaShader == NULL when not !USE_OPENGL_RENDERER, so no need to delete it outside the ifdef
 #ifdef USE_OPENGL_RENDERER
     if (android::uirenderer::Caches::hasInstance()) {
diff --git a/core/jni/android/graphics/Xfermode.cpp b/core/jni/android/graphics/Xfermode.cpp
index 2b53d28..976a91f 100644
--- a/core/jni/android/graphics/Xfermode.cpp
+++ b/core/jni/android/graphics/Xfermode.cpp
@@ -28,7 +28,7 @@
 
     static void finalizer(JNIEnv* env, jobject, SkXfermode* obj)
     {
-        obj->safeUnref();
+        SkSafeUnref(obj);
     }
     
     static SkXfermode* avoid_create(JNIEnv* env, jobject, SkColor opColor,
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index aa9c107..be66e9c 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -451,7 +451,7 @@
 public:
     ScreenshotPixelRef(SkColorTable* ctable) {
         fCTable = ctable;
-        ctable->safeRef();
+        SkSafeRef(ctable);
         setImmutable();
     }
     virtual ~ScreenshotPixelRef() {
diff --git a/core/jni/com_google_android_gles_jni_EGLImpl.cpp b/core/jni/com_google_android_gles_jni_EGLImpl.cpp
index 941ed63..e7ea8c8 100644
--- a/core/jni/com_google_android_gles_jni_EGLImpl.cpp
+++ b/core/jni/com_google_android_gles_jni_EGLImpl.cpp
@@ -290,7 +290,7 @@
         return;
     }
 
-    ref->safeRef();
+    SkSafeRef(ref);
     ref->lockPixels();
 
     egl_native_pixmap_t pixmap;
@@ -310,7 +310,7 @@
         _env->SetIntField(out_sur, gSurface_NativePixelRefFieldID, (int)ref);
     } else {
         ref->unlockPixels();
-        ref->safeUnref();
+        SkSafeUnref(ref);
     }
 }
 
@@ -430,7 +430,7 @@
                 gSurface_NativePixelRefFieldID));
         if (ref) {
             ref->unlockPixels();
-            ref->safeUnref();
+            SkSafeUnref(ref);
         }
     }
     return eglDestroySurface(dpy, sur);
diff --git a/libs/hwui/DisplayListRenderer.h b/libs/hwui/DisplayListRenderer.h
index f39f37f..e8f189d 100644
--- a/libs/hwui/DisplayListRenderer.h
+++ b/libs/hwui/DisplayListRenderer.h
@@ -22,7 +22,6 @@
 #include <SkMatrix.h>
 #include <SkPaint.h>
 #include <SkPath.h>
-#include <SkPictureFlat.h>
 #include <SkRefCnt.h>
 #include <SkTDArray.h>
 #include <SkTSearch.h>
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 4a08f53..a0aea00 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -1982,6 +1982,9 @@
 }
 
 SkXfermode::Mode OpenGLRenderer::getXfermode(SkXfermode* mode) {
+    /* In the future we should look at unifying the Porter-Duff modes and
+     * SkXferModes so that we can use SkXfermode::IsMode(xfer, &mode).
+     */
     if (mode == NULL) {
         return SkXfermode::kSrcOver_Mode;
     }
diff --git a/libs/hwui/ResourceCache.cpp b/libs/hwui/ResourceCache.cpp
index 87fdfb5..9aade51 100644
--- a/libs/hwui/ResourceCache.cpp
+++ b/libs/hwui/ResourceCache.cpp
@@ -60,8 +60,8 @@
 }
 
 void ResourceCache::incrementRefcount(SkBitmap* bitmapResource) {
-    bitmapResource->pixelRef()->safeRef();
-    bitmapResource->getColorTable()->safeRef();
+    SkSafeRef(bitmapResource->pixelRef());
+    SkSafeRef(bitmapResource->getColorTable());
     incrementRefcount((void*)bitmapResource, kBitmap);
 }
 
@@ -70,12 +70,12 @@
 }
 
 void ResourceCache::incrementRefcount(SkiaShader* shaderResource) {
-    shaderResource->getSkShader()->safeRef();
+    SkSafeRef(shaderResource->getSkShader());
     incrementRefcount((void*) shaderResource, kShader);
 }
 
 void ResourceCache::incrementRefcount(SkiaColorFilter* filterResource) {
-    filterResource->getSkColorFilter()->safeRef();
+    SkSafeRef(filterResource->getSkColorFilter());
     incrementRefcount((void*) filterResource, kColorFilter);
 }
 
@@ -93,8 +93,8 @@
 }
 
 void ResourceCache::decrementRefcount(SkBitmap* bitmapResource) {
-    bitmapResource->pixelRef()->safeUnref();
-    bitmapResource->getColorTable()->safeUnref();
+    SkSafeUnref(bitmapResource->pixelRef());
+    SkSafeUnref(bitmapResource->getColorTable());
     decrementRefcount((void*) bitmapResource);
 }
 
@@ -103,12 +103,12 @@
 }
 
 void ResourceCache::decrementRefcount(SkiaShader* shaderResource) {
-    shaderResource->getSkShader()->safeUnref();
+    SkSafeUnref(shaderResource->getSkShader());
     decrementRefcount((void*) shaderResource);
 }
 
 void ResourceCache::decrementRefcount(SkiaColorFilter* filterResource) {
-    filterResource->getSkColorFilter()->safeUnref();
+    SkSafeUnref(filterResource->getSkColorFilter());
     decrementRefcount((void*) filterResource);
 }
 
diff --git a/libs/hwui/ShapeCache.h b/libs/hwui/ShapeCache.h
index e535466..4c626dd 100644
--- a/libs/hwui/ShapeCache.h
+++ b/libs/hwui/ShapeCache.h
@@ -571,7 +571,7 @@
     pathPaint.setMaskFilter(NULL);
     pathPaint.setShader(NULL);
     SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrc_Mode);
-    pathPaint.setXfermode(mode)->safeUnref();
+    SkSafeUnref(pathPaint.setXfermode(mode));
 
     SkCanvas canvas(bitmap);
     canvas.translate(-bounds.fLeft + offset, -bounds.fTop + offset);