Loading core/jni/android/graphics/BitmapRegionDecoder.cpp +12 −13 Original line number Diff line number Diff line Loading @@ -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<SkStreamRewindable> stream) { SkAutoTDelete<SkBitmapRegionDecoder> 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"); Loading @@ -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<SkMemoryStream> 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; } Loading @@ -80,11 +79,11 @@ static jobject nativeNewInstanceFromFileDescriptor(JNIEnv* env, jobject clazz, return nullObjectReturn("fstat return -1"); } SkAutoTUnref<SkData> data(SkData::NewFromFD(descriptor)); SkMemoryStream* stream = new SkMemoryStream(data); sk_sp<SkData> data(SkData::MakeFromFD(descriptor)); std::unique_ptr<SkMemoryStream> 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; } Loading @@ -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<SkStreamRewindable> stream(CopyJavaInputStream(env, is, storage)); if (stream) { // the decoder owns the stream. brd = createBitmapRegionDecoder(env, stream); brd = createBitmapRegionDecoder(env, std::move(stream)); } return brd; } Loading @@ -107,13 +106,13 @@ static jobject nativeNewInstanceFromAsset(JNIEnv* env, jobject clazz, jlong native_asset, // Asset jboolean isShareable) { Asset* asset = reinterpret_cast<Asset*>(native_asset); SkMemoryStream* stream = CopyAssetToStream(asset); std::unique_ptr<SkMemoryStream> 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; } Loading core/jni/android/graphics/FontFamily.cpp +9 −8 Original line number Diff line number Diff line Loading @@ -98,9 +98,9 @@ static jboolean FontFamily_addFont(JNIEnv* env, jobject clazz, jlong familyPtr, return false; } jobject fontRef = MakeGlobalRefOrDie(env, bytebuf); SkAutoTUnref<SkData> data(SkData::NewWithProc(fontPtr, fontSize, sk_sp<SkData> data(SkData::MakeWithProc(fontPtr, fontSize, release_global_ref, reinterpret_cast<void*>(fontRef))); std::unique_ptr<SkStreamAsset> fontData(new SkMemoryStream(data)); std::unique_ptr<SkStreamAsset> fontData(new SkMemoryStream(std::move(data))); SkFontMgr::FontParameters params; params.setCollectionIndex(ttcIndex); Loading Loading @@ -163,9 +163,9 @@ static jboolean FontFamily_addFontWeightStyle(JNIEnv* env, jobject clazz, jlong return false; } jobject fontRef = MakeGlobalRefOrDie(env, font); SkAutoTUnref<SkData> data(SkData::NewWithProc(fontPtr, fontSize, sk_sp<SkData> data(SkData::MakeWithProc(fontPtr, fontSize, release_global_ref, reinterpret_cast<void*>(fontRef))); std::unique_ptr<SkStreamAsset> fontData(new SkMemoryStream(data.get())); std::unique_ptr<SkStreamAsset> fontData(new SkMemoryStream(std::move(data))); SkFontMgr::FontParameters params; params.setCollectionIndex(ttcIndex); Loading Loading @@ -212,10 +212,11 @@ static jboolean FontFamily_addFontFromAsset(JNIEnv* env, jobject, jlong familyPt } size_t bufSize = asset->getLength(); SkAutoTUnref<SkData> 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<SkData> data(SkData::MakeWithProc(buf, asset->getLength(), releaseAsset, asset)); std::unique_ptr<SkStreamAsset> fontData(new SkMemoryStream(std::move(data))); SkAutoTUnref<SkFontMgr> 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; Loading core/jni/android/graphics/Utils.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -100,14 +100,14 @@ SkMemoryStream* android::CopyAssetToStream(Asset* asset) { return NULL; } SkAutoTUnref<SkData> data(SkData::NewUninitialized(size)); sk_sp<SkData> 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[]) { Loading Loading
core/jni/android/graphics/BitmapRegionDecoder.cpp +12 −13 Original line number Diff line number Diff line Loading @@ -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<SkStreamRewindable> stream) { SkAutoTDelete<SkBitmapRegionDecoder> 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"); Loading @@ -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<SkMemoryStream> 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; } Loading @@ -80,11 +79,11 @@ static jobject nativeNewInstanceFromFileDescriptor(JNIEnv* env, jobject clazz, return nullObjectReturn("fstat return -1"); } SkAutoTUnref<SkData> data(SkData::NewFromFD(descriptor)); SkMemoryStream* stream = new SkMemoryStream(data); sk_sp<SkData> data(SkData::MakeFromFD(descriptor)); std::unique_ptr<SkMemoryStream> 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; } Loading @@ -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<SkStreamRewindable> stream(CopyJavaInputStream(env, is, storage)); if (stream) { // the decoder owns the stream. brd = createBitmapRegionDecoder(env, stream); brd = createBitmapRegionDecoder(env, std::move(stream)); } return brd; } Loading @@ -107,13 +106,13 @@ static jobject nativeNewInstanceFromAsset(JNIEnv* env, jobject clazz, jlong native_asset, // Asset jboolean isShareable) { Asset* asset = reinterpret_cast<Asset*>(native_asset); SkMemoryStream* stream = CopyAssetToStream(asset); std::unique_ptr<SkMemoryStream> 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; } Loading
core/jni/android/graphics/FontFamily.cpp +9 −8 Original line number Diff line number Diff line Loading @@ -98,9 +98,9 @@ static jboolean FontFamily_addFont(JNIEnv* env, jobject clazz, jlong familyPtr, return false; } jobject fontRef = MakeGlobalRefOrDie(env, bytebuf); SkAutoTUnref<SkData> data(SkData::NewWithProc(fontPtr, fontSize, sk_sp<SkData> data(SkData::MakeWithProc(fontPtr, fontSize, release_global_ref, reinterpret_cast<void*>(fontRef))); std::unique_ptr<SkStreamAsset> fontData(new SkMemoryStream(data)); std::unique_ptr<SkStreamAsset> fontData(new SkMemoryStream(std::move(data))); SkFontMgr::FontParameters params; params.setCollectionIndex(ttcIndex); Loading Loading @@ -163,9 +163,9 @@ static jboolean FontFamily_addFontWeightStyle(JNIEnv* env, jobject clazz, jlong return false; } jobject fontRef = MakeGlobalRefOrDie(env, font); SkAutoTUnref<SkData> data(SkData::NewWithProc(fontPtr, fontSize, sk_sp<SkData> data(SkData::MakeWithProc(fontPtr, fontSize, release_global_ref, reinterpret_cast<void*>(fontRef))); std::unique_ptr<SkStreamAsset> fontData(new SkMemoryStream(data.get())); std::unique_ptr<SkStreamAsset> fontData(new SkMemoryStream(std::move(data))); SkFontMgr::FontParameters params; params.setCollectionIndex(ttcIndex); Loading Loading @@ -212,10 +212,11 @@ static jboolean FontFamily_addFontFromAsset(JNIEnv* env, jobject, jlong familyPt } size_t bufSize = asset->getLength(); SkAutoTUnref<SkData> 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<SkData> data(SkData::MakeWithProc(buf, asset->getLength(), releaseAsset, asset)); std::unique_ptr<SkStreamAsset> fontData(new SkMemoryStream(std::move(data))); SkAutoTUnref<SkFontMgr> 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; Loading
core/jni/android/graphics/Utils.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -100,14 +100,14 @@ SkMemoryStream* android::CopyAssetToStream(Asset* asset) { return NULL; } SkAutoTUnref<SkData> data(SkData::NewUninitialized(size)); sk_sp<SkData> 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[]) { Loading