Loading cmds/screencap/screencap.cpp +5 −10 Original line number Diff line number Diff line Loading @@ -36,9 +36,7 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #include <SkImageEncoder.h> #include <SkBitmap.h> #include <SkData.h> #include <SkStream.h> #pragma GCC diagnostic pop using namespace android; Loading Loading @@ -198,14 +196,11 @@ int main(int argc, char** argv) if (png) { const SkImageInfo info = SkImageInfo::Make(w, h, flinger2skia(f), kPremul_SkAlphaType); SkBitmap b; b.installPixels(info, const_cast<void*>(base), s*bytesPerPixel(f)); SkDynamicMemoryWStream stream; SkImageEncoder::EncodeStream(&stream, b, SkImageEncoder::kPNG_Type, SkImageEncoder::kDefaultQuality); SkData* streamData = stream.copyToData(); write(fd, streamData->data(), streamData->size()); streamData->unref(); SkAutoTUnref<SkData> data(SkImageEncoder::EncodeData(info, base, s*bytesPerPixel(f), SkImageEncoder::kPNG_Type, SkImageEncoder::kDefaultQuality)); if (data.get()) { write(fd, data->data(), data->size()); } if (fn != NULL) { notifyMediaScanner(fn); } Loading core/jni/android/graphics/BitmapFactory.cpp +8 −9 Original line number Diff line number Diff line Loading @@ -461,11 +461,11 @@ static jobject nativeDecodeStream(JNIEnv* env, jobject clazz, jobject is, jbyteA jobject padding, jobject options) { jobject bitmap = NULL; SkAutoTUnref<SkStream> stream(CreateJavaInputStreamAdaptor(env, is, storage)); SkAutoTDelete<SkStream> stream(CreateJavaInputStreamAdaptor(env, is, storage)); if (stream.get()) { SkAutoTUnref<SkStreamRewindable> bufferedStream( SkFrontBufferedStream::Create(stream, BYTES_TO_BUFFER)); SkAutoTDelete<SkStreamRewindable> bufferedStream( SkFrontBufferedStream::Create(stream.detach(), BYTES_TO_BUFFER)); SkASSERT(bufferedStream.get() != NULL); bitmap = doDecode(env, bufferedStream, padding, options); } Loading Loading @@ -504,13 +504,13 @@ static jobject nativeDecodeFileDescriptor(JNIEnv* env, jobject clazz, jobject fi return nullObjectReturn("Could not open file"); } SkAutoTUnref<SkFILEStream> fileStream(new SkFILEStream(file, SkAutoTDelete<SkFILEStream> fileStream(new SkFILEStream(file, SkFILEStream::kCallerPasses_Ownership)); // Use a buffered stream. Although an SkFILEStream can be rewound, this // ensures that SkImageDecoder::Factory never rewinds beyond the // current position of the file descriptor. SkAutoTUnref<SkStreamRewindable> stream(SkFrontBufferedStream::Create(fileStream, SkAutoTDelete<SkStreamRewindable> stream(SkFrontBufferedStream::Create(fileStream.detach(), BYTES_TO_BUFFER)); return doDecode(env, stream, padding, bitmapFactoryOptions); Loading @@ -522,7 +522,7 @@ static jobject nativeDecodeAsset(JNIEnv* env, jobject clazz, jlong native_asset, Asset* asset = reinterpret_cast<Asset*>(native_asset); // since we know we'll be done with the asset when we return, we can // just use a simple wrapper SkAutoTUnref<SkStreamRewindable> stream(new AssetStreamAdaptor(asset)); SkAutoTDelete<SkStreamRewindable> stream(new AssetStreamAdaptor(asset)); return doDecode(env, stream, padding, options); } Loading @@ -530,8 +530,7 @@ static jobject nativeDecodeByteArray(JNIEnv* env, jobject, jbyteArray byteArray, jint offset, jint length, jobject options) { AutoJavaByteArray ar(env, byteArray); SkMemoryStream* stream = new SkMemoryStream(ar.ptr() + offset, length, false); SkAutoUnref aur(stream); SkAutoTDelete<SkMemoryStream> stream(new SkMemoryStream(ar.ptr() + offset, length, false)); return doDecode(env, stream, NULL, options); } Loading core/jni/android/graphics/BitmapRegionDecoder.cpp +11 −7 Original line number Diff line number Diff line Loading @@ -69,10 +69,13 @@ private: int fHeight; }; // Takes ownership of the SkStreamRewindable. For consistency, deletes stream even // when returning null. static jobject createBitmapRegionDecoder(JNIEnv* env, SkStreamRewindable* stream) { SkImageDecoder* decoder = SkImageDecoder::Factory(stream); int width, height; if (NULL == decoder) { SkDELETE(stream); doThrowIOE(env, "Image format not supported"); return nullObjectReturn("SkImageDecoder::Factory returned null"); } Loading @@ -81,6 +84,7 @@ static jobject createBitmapRegionDecoder(JNIEnv* env, SkStreamRewindable* stream decoder->setAllocator(javaAllocator); javaAllocator->unref(); // This call passes ownership of stream to the decoder, or deletes on failure. if (!decoder->buildTileIndex(stream, &width, &height)) { char msg[100]; snprintf(msg, sizeof(msg), "Image failed to decode using %s decoder", Loading @@ -103,8 +107,8 @@ static jobject nativeNewInstanceFromByteArray(JNIEnv* env, jobject, jbyteArray b AutoJavaByteArray ar(env, byteArray); SkMemoryStream* stream = new SkMemoryStream(ar.ptr() + offset, length, true); // the decoder owns the stream. jobject brd = createBitmapRegionDecoder(env, stream); SkSafeUnref(stream); // the decoder now holds a reference return brd; } Loading @@ -123,8 +127,8 @@ static jobject nativeNewInstanceFromFileDescriptor(JNIEnv* env, jobject clazz, SkAutoTUnref<SkData> data(SkData::NewFromFD(descriptor)); SkMemoryStream* stream = new SkMemoryStream(data); // the decoder owns the stream. jobject brd = createBitmapRegionDecoder(env, stream); SkSafeUnref(stream); // the decoder now holds a reference return brd; } Loading @@ -137,8 +141,8 @@ static jobject nativeNewInstanceFromStream(JNIEnv* env, jobject clazz, SkStreamRewindable* stream = CopyJavaInputStream(env, is, storage); if (stream) { // the decoder owns the stream. brd = createBitmapRegionDecoder(env, stream); stream->unref(); // the decoder now holds a reference } return brd; } Loading @@ -147,13 +151,13 @@ static jobject nativeNewInstanceFromAsset(JNIEnv* env, jobject clazz, jlong native_asset, // Asset jboolean isShareable) { Asset* asset = reinterpret_cast<Asset*>(native_asset); SkAutoTUnref<SkMemoryStream> stream(CopyAssetToStream(asset)); if (NULL == stream.get()) { SkMemoryStream* stream = CopyAssetToStream(asset); if (NULL == stream) { return NULL; } jobject brd = createBitmapRegionDecoder(env, stream.get()); // The decoder now holds a reference to stream. // the decoder owns the stream. jobject brd = createBitmapRegionDecoder(env, stream); return brd; } Loading core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -164,7 +164,7 @@ static SkMemoryStream* adaptor_to_mem_stream(SkStream* stream) { SkStreamRewindable* CopyJavaInputStream(JNIEnv* env, jobject stream, jbyteArray storage) { SkAutoTUnref<SkStream> adaptor(CreateJavaInputStreamAdaptor(env, stream, storage)); SkAutoTDelete<SkStream> adaptor(CreateJavaInputStreamAdaptor(env, stream, storage)); if (NULL == adaptor.get()) { return NULL; } Loading core/jni/android/graphics/FontFamily.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -111,7 +111,8 @@ static jboolean FontFamily_addFontFromAsset(JNIEnv* env, jobject, jlong familyPt } SkAutoTUnref<SkData> data(SkData::NewWithProc(buf, asset->getLength(), releaseAsset, asset)); SkAutoTUnref<SkMemoryStream> stream(new SkMemoryStream(data)); SkMemoryStream* stream = new SkMemoryStream(data); // CreateFromStream takes ownership of stream. SkTypeface* face = SkTypeface::CreateFromStream(stream); if (face == NULL) { ALOGE("addFontFromAsset failed to create font %s", str.c_str()); Loading Loading
cmds/screencap/screencap.cpp +5 −10 Original line number Diff line number Diff line Loading @@ -36,9 +36,7 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #include <SkImageEncoder.h> #include <SkBitmap.h> #include <SkData.h> #include <SkStream.h> #pragma GCC diagnostic pop using namespace android; Loading Loading @@ -198,14 +196,11 @@ int main(int argc, char** argv) if (png) { const SkImageInfo info = SkImageInfo::Make(w, h, flinger2skia(f), kPremul_SkAlphaType); SkBitmap b; b.installPixels(info, const_cast<void*>(base), s*bytesPerPixel(f)); SkDynamicMemoryWStream stream; SkImageEncoder::EncodeStream(&stream, b, SkImageEncoder::kPNG_Type, SkImageEncoder::kDefaultQuality); SkData* streamData = stream.copyToData(); write(fd, streamData->data(), streamData->size()); streamData->unref(); SkAutoTUnref<SkData> data(SkImageEncoder::EncodeData(info, base, s*bytesPerPixel(f), SkImageEncoder::kPNG_Type, SkImageEncoder::kDefaultQuality)); if (data.get()) { write(fd, data->data(), data->size()); } if (fn != NULL) { notifyMediaScanner(fn); } Loading
core/jni/android/graphics/BitmapFactory.cpp +8 −9 Original line number Diff line number Diff line Loading @@ -461,11 +461,11 @@ static jobject nativeDecodeStream(JNIEnv* env, jobject clazz, jobject is, jbyteA jobject padding, jobject options) { jobject bitmap = NULL; SkAutoTUnref<SkStream> stream(CreateJavaInputStreamAdaptor(env, is, storage)); SkAutoTDelete<SkStream> stream(CreateJavaInputStreamAdaptor(env, is, storage)); if (stream.get()) { SkAutoTUnref<SkStreamRewindable> bufferedStream( SkFrontBufferedStream::Create(stream, BYTES_TO_BUFFER)); SkAutoTDelete<SkStreamRewindable> bufferedStream( SkFrontBufferedStream::Create(stream.detach(), BYTES_TO_BUFFER)); SkASSERT(bufferedStream.get() != NULL); bitmap = doDecode(env, bufferedStream, padding, options); } Loading Loading @@ -504,13 +504,13 @@ static jobject nativeDecodeFileDescriptor(JNIEnv* env, jobject clazz, jobject fi return nullObjectReturn("Could not open file"); } SkAutoTUnref<SkFILEStream> fileStream(new SkFILEStream(file, SkAutoTDelete<SkFILEStream> fileStream(new SkFILEStream(file, SkFILEStream::kCallerPasses_Ownership)); // Use a buffered stream. Although an SkFILEStream can be rewound, this // ensures that SkImageDecoder::Factory never rewinds beyond the // current position of the file descriptor. SkAutoTUnref<SkStreamRewindable> stream(SkFrontBufferedStream::Create(fileStream, SkAutoTDelete<SkStreamRewindable> stream(SkFrontBufferedStream::Create(fileStream.detach(), BYTES_TO_BUFFER)); return doDecode(env, stream, padding, bitmapFactoryOptions); Loading @@ -522,7 +522,7 @@ static jobject nativeDecodeAsset(JNIEnv* env, jobject clazz, jlong native_asset, Asset* asset = reinterpret_cast<Asset*>(native_asset); // since we know we'll be done with the asset when we return, we can // just use a simple wrapper SkAutoTUnref<SkStreamRewindable> stream(new AssetStreamAdaptor(asset)); SkAutoTDelete<SkStreamRewindable> stream(new AssetStreamAdaptor(asset)); return doDecode(env, stream, padding, options); } Loading @@ -530,8 +530,7 @@ static jobject nativeDecodeByteArray(JNIEnv* env, jobject, jbyteArray byteArray, jint offset, jint length, jobject options) { AutoJavaByteArray ar(env, byteArray); SkMemoryStream* stream = new SkMemoryStream(ar.ptr() + offset, length, false); SkAutoUnref aur(stream); SkAutoTDelete<SkMemoryStream> stream(new SkMemoryStream(ar.ptr() + offset, length, false)); return doDecode(env, stream, NULL, options); } Loading
core/jni/android/graphics/BitmapRegionDecoder.cpp +11 −7 Original line number Diff line number Diff line Loading @@ -69,10 +69,13 @@ private: int fHeight; }; // Takes ownership of the SkStreamRewindable. For consistency, deletes stream even // when returning null. static jobject createBitmapRegionDecoder(JNIEnv* env, SkStreamRewindable* stream) { SkImageDecoder* decoder = SkImageDecoder::Factory(stream); int width, height; if (NULL == decoder) { SkDELETE(stream); doThrowIOE(env, "Image format not supported"); return nullObjectReturn("SkImageDecoder::Factory returned null"); } Loading @@ -81,6 +84,7 @@ static jobject createBitmapRegionDecoder(JNIEnv* env, SkStreamRewindable* stream decoder->setAllocator(javaAllocator); javaAllocator->unref(); // This call passes ownership of stream to the decoder, or deletes on failure. if (!decoder->buildTileIndex(stream, &width, &height)) { char msg[100]; snprintf(msg, sizeof(msg), "Image failed to decode using %s decoder", Loading @@ -103,8 +107,8 @@ static jobject nativeNewInstanceFromByteArray(JNIEnv* env, jobject, jbyteArray b AutoJavaByteArray ar(env, byteArray); SkMemoryStream* stream = new SkMemoryStream(ar.ptr() + offset, length, true); // the decoder owns the stream. jobject brd = createBitmapRegionDecoder(env, stream); SkSafeUnref(stream); // the decoder now holds a reference return brd; } Loading @@ -123,8 +127,8 @@ static jobject nativeNewInstanceFromFileDescriptor(JNIEnv* env, jobject clazz, SkAutoTUnref<SkData> data(SkData::NewFromFD(descriptor)); SkMemoryStream* stream = new SkMemoryStream(data); // the decoder owns the stream. jobject brd = createBitmapRegionDecoder(env, stream); SkSafeUnref(stream); // the decoder now holds a reference return brd; } Loading @@ -137,8 +141,8 @@ static jobject nativeNewInstanceFromStream(JNIEnv* env, jobject clazz, SkStreamRewindable* stream = CopyJavaInputStream(env, is, storage); if (stream) { // the decoder owns the stream. brd = createBitmapRegionDecoder(env, stream); stream->unref(); // the decoder now holds a reference } return brd; } Loading @@ -147,13 +151,13 @@ static jobject nativeNewInstanceFromAsset(JNIEnv* env, jobject clazz, jlong native_asset, // Asset jboolean isShareable) { Asset* asset = reinterpret_cast<Asset*>(native_asset); SkAutoTUnref<SkMemoryStream> stream(CopyAssetToStream(asset)); if (NULL == stream.get()) { SkMemoryStream* stream = CopyAssetToStream(asset); if (NULL == stream) { return NULL; } jobject brd = createBitmapRegionDecoder(env, stream.get()); // The decoder now holds a reference to stream. // the decoder owns the stream. jobject brd = createBitmapRegionDecoder(env, stream); return brd; } Loading
core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -164,7 +164,7 @@ static SkMemoryStream* adaptor_to_mem_stream(SkStream* stream) { SkStreamRewindable* CopyJavaInputStream(JNIEnv* env, jobject stream, jbyteArray storage) { SkAutoTUnref<SkStream> adaptor(CreateJavaInputStreamAdaptor(env, stream, storage)); SkAutoTDelete<SkStream> adaptor(CreateJavaInputStreamAdaptor(env, stream, storage)); if (NULL == adaptor.get()) { return NULL; } Loading
core/jni/android/graphics/FontFamily.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -111,7 +111,8 @@ static jboolean FontFamily_addFontFromAsset(JNIEnv* env, jobject, jlong familyPt } SkAutoTUnref<SkData> data(SkData::NewWithProc(buf, asset->getLength(), releaseAsset, asset)); SkAutoTUnref<SkMemoryStream> stream(new SkMemoryStream(data)); SkMemoryStream* stream = new SkMemoryStream(data); // CreateFromStream takes ownership of stream. SkTypeface* face = SkTypeface::CreateFromStream(stream); if (face == NULL) { ALOGE("addFontFromAsset failed to create font %s", str.c_str()); Loading