From d8b5c31904d9f6d1eabaa0b8417a25342407e382 Mon Sep 17 00:00:00 2001 From: Ben Wagner Date: Wed, 3 Aug 2016 15:55:25 -0400 Subject: [PATCH] Move from SkData::NewXXX to SkData::MakeXXX. Skia is moving to returning smart pointers when creating an SkData. Change-Id: I1f672bad9fabb65026c5c7ee51410fb2a65dade3 --- .../android/graphics/BitmapRegionDecoder.cpp | 25 +++++++++---------- core/jni/android/graphics/FontFamily.cpp | 17 +++++++------ core/jni/android/graphics/Utils.cpp | 4 +-- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/core/jni/android/graphics/BitmapRegionDecoder.cpp b/core/jni/android/graphics/BitmapRegionDecoder.cpp index a1ba42e7ab724..970001a123f8a 100644 --- a/core/jni/android/graphics/BitmapRegionDecoder.cpp +++ b/core/jni/android/graphics/BitmapRegionDecoder.cpp @@ -41,11 +41,10 @@ using namespace android; -// Takes ownership of the SkStreamRewindable. For consistency, deletes stream even -// when returning null. -static jobject createBitmapRegionDecoder(JNIEnv* env, SkStreamRewindable* stream) { +static jobject createBitmapRegionDecoder(JNIEnv* env, std::unique_ptr stream) { SkAutoTDelete brd( - SkBitmapRegionDecoder::Create(stream, SkBitmapRegionDecoder::kAndroidCodec_Strategy)); + SkBitmapRegionDecoder::Create(stream.release(), + SkBitmapRegionDecoder::kAndroidCodec_Strategy)); if (NULL == brd) { doThrowIOE(env, "Image format not supported"); return nullObjectReturn("CreateBitmapRegionDecoder returned null"); @@ -61,10 +60,10 @@ static jobject nativeNewInstanceFromByteArray(JNIEnv* env, jobject, jbyteArray b For now we just always copy the array's data if isShareable. */ AutoJavaByteArray ar(env, byteArray); - SkMemoryStream* stream = new SkMemoryStream(ar.ptr() + offset, length, true); + std::unique_ptr stream(new SkMemoryStream(ar.ptr() + offset, length, true)); // the decoder owns the stream. - jobject brd = createBitmapRegionDecoder(env, stream); + jobject brd = createBitmapRegionDecoder(env, std::move(stream)); return brd; } @@ -80,11 +79,11 @@ static jobject nativeNewInstanceFromFileDescriptor(JNIEnv* env, jobject clazz, return nullObjectReturn("fstat return -1"); } - SkAutoTUnref data(SkData::NewFromFD(descriptor)); - SkMemoryStream* stream = new SkMemoryStream(data); + sk_sp data(SkData::MakeFromFD(descriptor)); + std::unique_ptr stream(new SkMemoryStream(std::move(data))); // the decoder owns the stream. - jobject brd = createBitmapRegionDecoder(env, stream); + jobject brd = createBitmapRegionDecoder(env, std::move(stream)); return brd; } @@ -94,11 +93,11 @@ static jobject nativeNewInstanceFromStream(JNIEnv* env, jobject clazz, jboolean isShareable) { jobject brd = NULL; // for now we don't allow shareable with java inputstreams - SkStreamRewindable* stream = CopyJavaInputStream(env, is, storage); + std::unique_ptr stream(CopyJavaInputStream(env, is, storage)); if (stream) { // the decoder owns the stream. - brd = createBitmapRegionDecoder(env, stream); + brd = createBitmapRegionDecoder(env, std::move(stream)); } return brd; } @@ -107,13 +106,13 @@ static jobject nativeNewInstanceFromAsset(JNIEnv* env, jobject clazz, jlong native_asset, // Asset jboolean isShareable) { Asset* asset = reinterpret_cast(native_asset); - SkMemoryStream* stream = CopyAssetToStream(asset); + std::unique_ptr stream(CopyAssetToStream(asset)); if (NULL == stream) { return NULL; } // the decoder owns the stream. - jobject brd = createBitmapRegionDecoder(env, stream); + jobject brd = createBitmapRegionDecoder(env, std::move(stream)); return brd; } diff --git a/core/jni/android/graphics/FontFamily.cpp b/core/jni/android/graphics/FontFamily.cpp index 1232675525b46..6fa1ca7c8771f 100644 --- a/core/jni/android/graphics/FontFamily.cpp +++ b/core/jni/android/graphics/FontFamily.cpp @@ -98,9 +98,9 @@ static jboolean FontFamily_addFont(JNIEnv* env, jobject clazz, jlong familyPtr, return false; } jobject fontRef = MakeGlobalRefOrDie(env, bytebuf); - SkAutoTUnref data(SkData::NewWithProc(fontPtr, fontSize, + sk_sp data(SkData::MakeWithProc(fontPtr, fontSize, release_global_ref, reinterpret_cast(fontRef))); - std::unique_ptr fontData(new SkMemoryStream(data)); + std::unique_ptr fontData(new SkMemoryStream(std::move(data))); SkFontMgr::FontParameters params; params.setCollectionIndex(ttcIndex); @@ -163,9 +163,9 @@ static jboolean FontFamily_addFontWeightStyle(JNIEnv* env, jobject clazz, jlong return false; } jobject fontRef = MakeGlobalRefOrDie(env, font); - SkAutoTUnref data(SkData::NewWithProc(fontPtr, fontSize, + sk_sp data(SkData::MakeWithProc(fontPtr, fontSize, release_global_ref, reinterpret_cast(fontRef))); - std::unique_ptr fontData(new SkMemoryStream(data.get())); + std::unique_ptr fontData(new SkMemoryStream(std::move(data))); SkFontMgr::FontParameters params; params.setCollectionIndex(ttcIndex); @@ -212,10 +212,11 @@ static jboolean FontFamily_addFontFromAsset(JNIEnv* env, jobject, jlong familyPt } size_t bufSize = asset->getLength(); - SkAutoTUnref data(SkData::NewWithProc(buf, asset->getLength(), releaseAsset, asset)); - SkMemoryStream* stream = new SkMemoryStream(data.get()); - // CreateFromStream takes ownership of stream. - SkTypeface* face = SkTypeface::CreateFromStream(stream); + sk_sp data(SkData::MakeWithProc(buf, asset->getLength(), releaseAsset, asset)); + std::unique_ptr fontData(new SkMemoryStream(std::move(data))); + + SkAutoTUnref fm(SkFontMgr::RefDefault()); + SkTypeface* face = fm->createFromStream(fontData.release(), SkFontMgr::FontParameters()); if (face == NULL) { ALOGE("addFontFromAsset failed to create font %s", str.c_str()); return false; diff --git a/core/jni/android/graphics/Utils.cpp b/core/jni/android/graphics/Utils.cpp index 5fa445e256fe0..899c2daf8bfce 100644 --- a/core/jni/android/graphics/Utils.cpp +++ b/core/jni/android/graphics/Utils.cpp @@ -100,14 +100,14 @@ SkMemoryStream* android::CopyAssetToStream(Asset* asset) { return NULL; } - SkAutoTUnref data(SkData::NewUninitialized(size)); + sk_sp data(SkData::MakeUninitialized(size)); const off64_t len = asset->read(data->writable_data(), size); if (len != size) { SkDebugf("---- copyAsset: asset->read(%d) returned %d\n", size, len); return NULL; } - return new SkMemoryStream(data); + return new SkMemoryStream(std::move(data)); } jobject android::nullObjectReturn(const char msg[]) {