From 60126efd7d905ca24822765c6dafac17fef278ab Mon Sep 17 00:00:00 2001 From: Ben Wagner Date: Fri, 7 Aug 2015 12:13:48 -0400 Subject: [PATCH] Use unique_ptr instead of SkAutoTDelete. Skia would like to make SkAutoTDelete private, given that unique_ptr now exists and is a better standard alternative. Change-Id: Ie21bc4546c93e2096c1e43b26eb3ef80b8f11de4 --- core/jni/android/graphics/BitmapFactory.cpp | 38 +++++++++---------- .../android/graphics/BitmapRegionDecoder.cpp | 19 ++++------ .../CreateJavaOutputStreamAdaptor.cpp | 6 ++- core/jni/android/graphics/Interpolator.cpp | 7 ++-- core/jni/android/graphics/Matrix.cpp | 9 ++--- core/jni/android/graphics/Movie.cpp | 19 +++++----- core/jni/android/graphics/PathEffect.cpp | 12 +++--- core/jni/android/graphics/Picture.cpp | 7 ++-- core/jni/android/graphics/Picture.h | 5 ++- core/jni/android/graphics/Shader.cpp | 11 ++---- core/jni/android_graphics_Picture.cpp | 10 ++--- core/jni/android_view_SurfaceControl.cpp | 23 ++++------- libs/hwui/SkiaCanvas.cpp | 4 +- 13 files changed, 77 insertions(+), 93 deletions(-) diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp index 3ca4e726c918d..20a54e538ea80 100644 --- a/core/jni/android/graphics/BitmapFactory.cpp +++ b/core/jni/android/graphics/BitmapFactory.cpp @@ -1,24 +1,24 @@ #define LOG_TAG "BitmapFactory" +#include "AutoDecodeCancel.h" #include "BitmapFactory.h" +#include "CreateJavaOutputStreamAdaptor.h" +#include "GraphicsJNI.h" #include "NinePatchPeeker.h" #include "SkFrontBufferedStream.h" #include "SkImageDecoder.h" #include "SkMath.h" #include "SkPixelRef.h" #include "SkStream.h" -#include "SkTemplates.h" #include "SkUtils.h" -#include "CreateJavaOutputStreamAdaptor.h" -#include "AutoDecodeCancel.h" #include "Utils.h" -#include "JNIHelp.h" -#include "GraphicsJNI.h" - #include "core_jni_helpers.h" + +#include #include #include #include +#include #include #include #include @@ -291,7 +291,7 @@ static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding // Only setup the decoder to be deleted after its stack-based, refcounted // components (allocators, peekers, etc) are declared. This prevents RefCnt // asserts from firing due to the order objects are deleted from the stack. - SkAutoTDelete add(decoder); + std::unique_ptr add(decoder); AutoDecoderCancel adc(options, decoder); @@ -453,13 +453,13 @@ static jobject nativeDecodeStream(JNIEnv* env, jobject clazz, jobject is, jbyteA jobject padding, jobject options) { jobject bitmap = NULL; - SkAutoTDelete stream(CreateJavaInputStreamAdaptor(env, is, storage)); + std::unique_ptr stream(CreateJavaInputStreamAdaptor(env, is, storage)); if (stream.get()) { - SkAutoTDelete bufferedStream( - SkFrontBufferedStream::Create(stream.detach(), BYTES_TO_BUFFER)); + std::unique_ptr bufferedStream( + SkFrontBufferedStream::Create(stream.release(), BYTES_TO_BUFFER)); SkASSERT(bufferedStream.get() != NULL); - bitmap = doDecode(env, bufferedStream, padding, options); + bitmap = doDecode(env, bufferedStream.get(), padding, options); } return bitmap; } @@ -496,16 +496,16 @@ static jobject nativeDecodeFileDescriptor(JNIEnv* env, jobject clazz, jobject fi return nullObjectReturn("Could not open file"); } - SkAutoTDelete fileStream(new SkFILEStream(file, + std::unique_ptr 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. - SkAutoTDelete stream(SkFrontBufferedStream::Create(fileStream.detach(), + std::unique_ptr stream(SkFrontBufferedStream::Create(fileStream.release(), BYTES_TO_BUFFER)); - return doDecode(env, stream, padding, bitmapFactoryOptions); + return doDecode(env, stream.get(), padding, bitmapFactoryOptions); } static jobject nativeDecodeAsset(JNIEnv* env, jobject clazz, jlong native_asset, @@ -514,16 +514,16 @@ static jobject nativeDecodeAsset(JNIEnv* env, jobject clazz, jlong native_asset, Asset* asset = reinterpret_cast(native_asset); // since we know we'll be done with the asset when we return, we can // just use a simple wrapper - SkAutoTDelete stream(new AssetStreamAdaptor(asset)); - return doDecode(env, stream, padding, options); + AssetStreamAdaptor stream(asset); + return doDecode(env, &stream, padding, options); } static jobject nativeDecodeByteArray(JNIEnv* env, jobject, jbyteArray byteArray, jint offset, jint length, jobject options) { AutoJavaByteArray ar(env, byteArray); - SkAutoTDelete stream(new SkMemoryStream(ar.ptr() + offset, length, false)); - return doDecode(env, stream, NULL, options); + SkMemoryStream stream(ar.ptr() + offset, length, false); + return doDecode(env, &stream, NULL, options); } static void nativeRequestCancel(JNIEnv*, jobject joptions) { @@ -536,7 +536,7 @@ static jboolean nativeIsSeekable(JNIEnv* env, jobject, jobject fileDescriptor) { } jobject decodeBitmap(JNIEnv* env, void* data, size_t size) { - SkMemoryStream stream(data, size); + SkMemoryStream stream(data, size); return doDecode(env, &stream, NULL, NULL); } diff --git a/core/jni/android/graphics/BitmapRegionDecoder.cpp b/core/jni/android/graphics/BitmapRegionDecoder.cpp index 08a3f6f341796..8535e6a8c9754 100644 --- a/core/jni/android/graphics/BitmapRegionDecoder.cpp +++ b/core/jni/android/graphics/BitmapRegionDecoder.cpp @@ -16,28 +16,25 @@ #define LOG_TAG "BitmapRegionDecoder" +#include "AutoDecodeCancel.h" +#include "BitmapFactory.h" +#include "CreateJavaOutputStreamAdaptor.h" #include "SkBitmap.h" #include "SkData.h" -#include "SkImageEncoder.h" #include "GraphicsJNI.h" +#include "SkImageEncoder.h" #include "SkUtils.h" -#include "SkTemplates.h" #include "SkPixelRef.h" #include "SkStream.h" -#include "BitmapFactory.h" -#include "AutoDecodeCancel.h" -#include "CreateJavaOutputStreamAdaptor.h" #include "Utils.h" -#include "JNIHelp.h" - -#include "core_jni_helpers.h" -#include "android_util_Binder.h" #include "android_nio_utils.h" -#include "CreateJavaOutputStreamAdaptor.h" +#include "android_util_Binder.h" +#include "core_jni_helpers.h" +#include +#include #include #include -#include #include using namespace android; diff --git a/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp b/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp index 26523f89ec4f9..067489a547c02 100644 --- a/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp +++ b/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp @@ -1,11 +1,13 @@ #include "CreateJavaOutputStreamAdaptor.h" -#include "JNIHelp.h" #include "SkData.h" #include "SkRefCnt.h" #include "SkStream.h" #include "SkTypes.h" #include "Utils.h" +#include +#include + static jmethodID gInputStream_readMethodID; static jmethodID gInputStream_skipMethodID; @@ -164,7 +166,7 @@ static SkMemoryStream* adaptor_to_mem_stream(SkStream* stream) { SkStreamRewindable* CopyJavaInputStream(JNIEnv* env, jobject stream, jbyteArray storage) { - SkAutoTDelete adaptor(CreateJavaInputStreamAdaptor(env, stream, storage)); + std::unique_ptr adaptor(CreateJavaInputStreamAdaptor(env, stream, storage)); if (NULL == adaptor.get()) { return NULL; } diff --git a/core/jni/android/graphics/Interpolator.cpp b/core/jni/android/graphics/Interpolator.cpp index f7f3511d15a91..3593d1a4ab326 100644 --- a/core/jni/android/graphics/Interpolator.cpp +++ b/core/jni/android/graphics/Interpolator.cpp @@ -1,9 +1,8 @@ -#include "jni.h" -#include "core_jni_helpers.h" - #include "GraphicsJNI.h" #include "SkInterpolator.h" -#include "SkTemplates.h" +#include "core_jni_helpers.h" + +#include static jlong Interpolator_constructor(JNIEnv* env, jobject clazz, jint valueCount, jint frameCount) { diff --git a/core/jni/android/graphics/Matrix.cpp b/core/jni/android/graphics/Matrix.cpp index 0ff7c7815a5fb..101e2ba603e67 100644 --- a/core/jni/android/graphics/Matrix.cpp +++ b/core/jni/android/graphics/Matrix.cpp @@ -15,16 +15,13 @@ ** limitations under the License. */ -#include "jni.h" #include "GraphicsJNI.h" -#include - -#include "SkMatrix.h" -#include "SkTemplates.h" - #include "Matrix.h" +#include "SkMatrix.h" +#include "core_jni_helpers.h" #include +#include namespace android { diff --git a/core/jni/android/graphics/Movie.cpp b/core/jni/android/graphics/Movie.cpp index 5c7acf83a4107..d67ed10e9ef1e 100644 --- a/core/jni/android/graphics/Movie.cpp +++ b/core/jni/android/graphics/Movie.cpp @@ -1,21 +1,20 @@ #include "Canvas.h" +#include "CreateJavaOutputStreamAdaptor.h" +#include "GraphicsJNI.h" +#include "Paint.h" #include "ScopedLocalRef.h" #include "SkFrontBufferedStream.h" #include "SkMovie.h" #include "SkStream.h" -#include "GraphicsJNI.h" -#include "SkTemplates.h" #include "SkUtils.h" #include "Utils.h" -#include "CreateJavaOutputStreamAdaptor.h" -#include "Paint.h" +#include "core_jni_helpers.h" #include #include +#include #include -#include "core_jni_helpers.h" - static jclass gMovie_class; static jmethodID gMovie_constructorMethodID; static jfieldID gMovie_nativeInstanceID; @@ -84,8 +83,8 @@ static void movie_draw(JNIEnv* env, jobject movie, jlong canvasHandle, static jobject movie_decodeAsset(JNIEnv* env, jobject clazz, jlong native_asset) { android::Asset* asset = reinterpret_cast(native_asset); if (asset == NULL) return NULL; - SkAutoTDelete stream(new android::AssetStreamAdaptor(asset)); - SkMovie* moov = SkMovie::DecodeStream(stream.get()); + android::AssetStreamAdaptor stream(asset); + SkMovie* moov = SkMovie::DecodeStream(&stream); return create_jmovie(env, moov); } @@ -105,10 +104,10 @@ static jobject movie_decodeStream(JNIEnv* env, jobject clazz, jobject istream) { // will only read 6. // FIXME: Get this number from SkImageDecoder // bufferedStream takes ownership of strm - SkAutoTDelete bufferedStream(SkFrontBufferedStream::Create(strm, 6)); + std::unique_ptr bufferedStream(SkFrontBufferedStream::Create(strm, 6)); SkASSERT(bufferedStream.get() != NULL); - SkMovie* moov = SkMovie::DecodeStream(bufferedStream); + SkMovie* moov = SkMovie::DecodeStream(bufferedStream.get()); return create_jmovie(env, moov); } diff --git a/core/jni/android/graphics/PathEffect.cpp b/core/jni/android/graphics/PathEffect.cpp index 9d0f0ad687556..265944e216e26 100644 --- a/core/jni/android/graphics/PathEffect.cpp +++ b/core/jni/android/graphics/PathEffect.cpp @@ -1,14 +1,12 @@ -#include #include "GraphicsJNI.h" - -#include "core_jni_helpers.h" - -#include "SkPathEffect.h" +#include "Sk1DPathEffect.h" #include "SkCornerPathEffect.h" #include "SkDashPathEffect.h" #include "SkDiscretePathEffect.h" -#include "Sk1DPathEffect.h" -#include "SkTemplates.h" +#include "SkPathEffect.h" +#include "core_jni_helpers.h" + +#include class SkPathEffectGlue { public: diff --git a/core/jni/android/graphics/Picture.cpp b/core/jni/android/graphics/Picture.cpp index 12bfaa28c763b..6e83f1b19f5f3 100644 --- a/core/jni/android/graphics/Picture.cpp +++ b/core/jni/android/graphics/Picture.cpp @@ -16,9 +16,10 @@ #include "Canvas.h" #include "Picture.h" - #include "SkStream.h" +#include + namespace android { Picture::Picture(const Picture* src) { @@ -81,7 +82,7 @@ Picture* Picture::CreateFromStream(SkStream* stream) { void Picture::serialize(SkWStream* stream) const { if (NULL != mRecorder.get()) { - SkAutoTDelete tempPict(this->makePartialCopy()); + std::unique_ptr tempPict(this->makePartialCopy()); tempPict->serialize(stream); } else if (NULL != mPicture.get()) { validate(); @@ -89,7 +90,7 @@ void Picture::serialize(SkWStream* stream) const { } else { SkPictureRecorder recorder; recorder.beginRecording(0, 0); - SkAutoTUnref empty(recorder.endRecording()); + std::unique_ptr empty(recorder.endRecording()); empty->serialize(stream); } } diff --git a/core/jni/android/graphics/Picture.h b/core/jni/android/graphics/Picture.h index a9db6487cb040..26a4f6a3e6a66 100644 --- a/core/jni/android/graphics/Picture.h +++ b/core/jni/android/graphics/Picture.h @@ -20,7 +20,8 @@ #include "SkPicture.h" #include "SkPictureRecorder.h" #include "SkRefCnt.h" -#include "SkTemplates.h" + +#include class SkStream; class SkWStream; @@ -55,7 +56,7 @@ private: int mWidth; int mHeight; SkAutoTUnref mPicture; - SkAutoTDelete mRecorder; + std::unique_ptr mRecorder; // Make a copy of a picture that is in the midst of being recorded. The // resulting picture will have balanced saves and restores. diff --git a/core/jni/android/graphics/Shader.cpp b/core/jni/android/graphics/Shader.cpp index ad3a5e2c56240..49c377e9c97fe 100644 --- a/core/jni/android/graphics/Shader.cpp +++ b/core/jni/android/graphics/Shader.cpp @@ -1,15 +1,12 @@ -#include #include "GraphicsJNI.h" - -#include "SkShader.h" -#include "SkGradientShader.h" #include "SkComposeShader.h" -#include "SkTemplates.h" +#include "SkGradientShader.h" +#include "SkShader.h" #include "SkXfermode.h" +#include "core_jni_helpers.h" #include - -#include "core_jni_helpers.h" +#include using namespace android::uirenderer; diff --git a/core/jni/android_graphics_Picture.cpp b/core/jni/android_graphics_Picture.cpp index 308ee206d50e3..fd42ddb9226e9 100644 --- a/core/jni/android_graphics_Picture.cpp +++ b/core/jni/android_graphics_Picture.cpp @@ -14,16 +14,14 @@ * limitations under the License. */ -#include "jni.h" +#include "CreateJavaOutputStreamAdaptor.h" #include "GraphicsJNI.h" -#include "core_jni_helpers.h" - #include "Picture.h" - #include "SkCanvas.h" #include "SkStream.h" -#include "SkTemplates.h" -#include "CreateJavaOutputStreamAdaptor.h" +#include "core_jni_helpers.h" + +#include namespace android { diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 77af341590f7d..54be41086bdf8 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -16,35 +16,28 @@ #define LOG_TAG "SurfaceControl" -#include - -#include "jni.h" -#include "JNIHelp.h" - #include "android_os_Parcel.h" #include "android_util_Binder.h" #include "android/graphics/Bitmap.h" #include "android/graphics/GraphicsJNI.h" #include "android/graphics/Region.h" - #include "core_jni_helpers.h" + +#include +#include #include #include - #include #include - +#include +#include +#include #include #include #include #include - #include -#include - -#include "SkTemplates.h" - // ---------------------------------------------------------------------------- namespace android { @@ -131,7 +124,7 @@ static jobject nativeScreenshotBitmap(JNIEnv* env, jclass clazz, int bottom = env->GetIntField(sourceCropObj, gRectClassInfo.bottom); Rect sourceCrop(left, top, right, bottom); - SkAutoTDelete screenshot(new ScreenshotClient()); + std::unique_ptr screenshot(new ScreenshotClient()); status_t res; if (allLayers) { minLayer = 0; @@ -179,7 +172,7 @@ static jobject nativeScreenshotBitmap(JNIEnv* env, jclass clazz, Bitmap* bitmap = new Bitmap( (void*) screenshot->getPixels(), (void*) screenshot.get(), DeleteScreenshot, screenshotInfo, rowBytes, nullptr); - screenshot.detach(); + screenshot.release(); bitmap->peekAtPixelRef()->setImmutable(); return GraphicsJNI::createBitmap(env, bitmap, diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp index 77079b7bb788f..b2d1fecdaa4cd 100644 --- a/libs/hwui/SkiaCanvas.cpp +++ b/libs/hwui/SkiaCanvas.cpp @@ -26,6 +26,8 @@ #include #include +#include + namespace android { // Holds an SkCanvas reference plus additional native data. @@ -151,7 +153,7 @@ private: void drawTextDecorations(float x, float y, float length, const SkPaint& paint); SkAutoTUnref mCanvas; - SkAutoTDelete mSaveStack; // lazily allocated, tracks partial saves. + std::unique_ptr mSaveStack; // lazily allocated, tracks partial saves. }; Canvas* Canvas::create_canvas(const SkBitmap& bitmap) {