Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b2915245 authored by John Reck's avatar John Reck
Browse files

Cleanup Bitmap JNI

Fix a bunch of places where mNativeBitmap was being
poked at directly, switch them either to the NDK API
or to GraphicsJNI where it made sense

Change-Id: I6b3df3712d6497cba828c2d3012e725cb4ebb64d
parent f855b0d2
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -204,7 +204,7 @@ class GLES20Canvas extends HardwareCanvas {
        Bitmap bitmap = patch.getBitmap();
        Bitmap bitmap = patch.getBitmap();
        throwIfCannotDraw(bitmap);
        throwIfCannotDraw(bitmap);
        final long nativePaint = paint == null ? 0 : paint.getNativeInstance();
        final long nativePaint = paint == null ? 0 : paint.getNativeInstance();
        nDrawPatch(mNativeCanvasWrapper, bitmap.mNativeBitmap, patch.mNativeChunk,
        nDrawPatch(mNativeCanvasWrapper, bitmap.getSkBitmap(), patch.mNativeChunk,
                dst.left, dst.top, dst.right, dst.bottom, nativePaint);
                dst.left, dst.top, dst.right, dst.bottom, nativePaint);
    }
    }


@@ -214,7 +214,7 @@ class GLES20Canvas extends HardwareCanvas {
        Bitmap bitmap = patch.getBitmap();
        Bitmap bitmap = patch.getBitmap();
        throwIfCannotDraw(bitmap);
        throwIfCannotDraw(bitmap);
        final long nativePaint = paint == null ? 0 : paint.getNativeInstance();
        final long nativePaint = paint == null ? 0 : paint.getNativeInstance();
        nDrawPatch(mNativeCanvasWrapper, bitmap.mNativeBitmap, patch.mNativeChunk,
        nDrawPatch(mNativeCanvasWrapper, bitmap.getSkBitmap(), patch.mNativeChunk,
                dst.left, dst.top, dst.right, dst.bottom, nativePaint);
                dst.left, dst.top, dst.right, dst.bottom, nativePaint);
    }
    }


+2 −2
Original line number Original line Diff line number Diff line
@@ -364,7 +364,7 @@ public class ThreadedRenderer extends HardwareRenderer {
    @Override
    @Override
    boolean copyLayerInto(final HardwareLayer layer, final Bitmap bitmap) {
    boolean copyLayerInto(final HardwareLayer layer, final Bitmap bitmap) {
        return nCopyLayerInto(mNativeProxy,
        return nCopyLayerInto(mNativeProxy,
                layer.getDeferredLayerUpdater(), bitmap.mNativeBitmap);
                layer.getDeferredLayerUpdater(), bitmap.getSkBitmap());
    }
    }


    @Override
    @Override
@@ -465,7 +465,7 @@ public class ThreadedRenderer extends HardwareRenderer {
            for (int i = 0; i < count; i++) {
            for (int i = 0; i < count; i++) {
                drawables.valueAt(i).addAtlasableBitmaps(tmpList);
                drawables.valueAt(i).addAtlasableBitmaps(tmpList);
                for (int j = 0; j < tmpList.size(); j++) {
                for (int j = 0; j < tmpList.size(); j++) {
                    preloadedPointers.add(tmpList.get(j).mNativeBitmap);
                    preloadedPointers.add(tmpList.get(j).getSkBitmap());
                }
                }
                tmpList.clear();
                tmpList.clear();
            }
            }
+1 −1
Original line number Original line Diff line number Diff line
@@ -147,7 +147,7 @@ LOCAL_SRC_FILES:= \
    android_hardware_location_ActivityRecognitionHardware.cpp \
    android_hardware_location_ActivityRecognitionHardware.cpp \
    android_util_FileObserver.cpp \
    android_util_FileObserver.cpp \
    android/opengl/poly_clip.cpp.arm \
    android/opengl/poly_clip.cpp.arm \
    android/opengl/util.cpp.arm \
    android/opengl/util.cpp \
    android_server_FingerprintManager.cpp \
    android_server_FingerprintManager.cpp \
    android_server_NetworkManagementSocketTagger.cpp \
    android_server_NetworkManagementSocketTagger.cpp \
    android_server_Watchdog.cpp \
    android_server_Watchdog.cpp \
+1 −3
Original line number Original line Diff line number Diff line
@@ -41,7 +41,6 @@ jfieldID gOptions_mimeFieldID;
jfieldID gOptions_mCancelID;
jfieldID gOptions_mCancelID;
jfieldID gOptions_bitmapFieldID;
jfieldID gOptions_bitmapFieldID;


jfieldID gBitmap_nativeBitmapFieldID;
jfieldID gBitmap_ninePatchInsetsFieldID;
jfieldID gBitmap_ninePatchInsetsFieldID;


jclass gInsetStruct_class;
jclass gInsetStruct_class;
@@ -262,7 +261,7 @@ static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding
    SkBitmap* outputBitmap = NULL;
    SkBitmap* outputBitmap = NULL;
    unsigned int existingBufferSize = 0;
    unsigned int existingBufferSize = 0;
    if (javaBitmap != NULL) {
    if (javaBitmap != NULL) {
        outputBitmap = (SkBitmap*) env->GetLongField(javaBitmap, gBitmap_nativeBitmapFieldID);
        outputBitmap = GraphicsJNI::getSkBitmap(env, javaBitmap);
        if (outputBitmap->isImmutable()) {
        if (outputBitmap->isImmutable()) {
            ALOGW("Unable to reuse an immutable bitmap as an image decoder target.");
            ALOGW("Unable to reuse an immutable bitmap as an image decoder target.");
            javaBitmap = NULL;
            javaBitmap = NULL;
@@ -601,7 +600,6 @@ int register_android_graphics_BitmapFactory(JNIEnv* env) {
    gOptions_mCancelID = GetFieldIDOrDie(env, options_class, "mCancel", "Z");
    gOptions_mCancelID = GetFieldIDOrDie(env, options_class, "mCancel", "Z");


    jclass bitmap_class = FindClassOrDie(env, "android/graphics/Bitmap");
    jclass bitmap_class = FindClassOrDie(env, "android/graphics/Bitmap");
    gBitmap_nativeBitmapFieldID = GetFieldIDOrDie(env, bitmap_class, "mNativeBitmap", "J");
    gBitmap_ninePatchInsetsFieldID = GetFieldIDOrDie(env, bitmap_class, "mNinePatchInsets",
    gBitmap_ninePatchInsetsFieldID = GetFieldIDOrDie(env, bitmap_class, "mNinePatchInsets",
            "Landroid/graphics/NinePatch$InsetStruct;");
            "Landroid/graphics/NinePatch$InsetStruct;");


+1 −1
Original line number Original line Diff line number Diff line
@@ -213,7 +213,7 @@ static jobject nativeDecodeRegion(JNIEnv* env, jobject, jlong brdHandle,


    if (tileBitmap != NULL) {
    if (tileBitmap != NULL) {
        // Re-use bitmap.
        // Re-use bitmap.
        bitmap = GraphicsJNI::getNativeBitmap(env, tileBitmap);
        bitmap = GraphicsJNI::getSkBitmap(env, tileBitmap);
    }
    }
    if (bitmap == NULL) {
    if (bitmap == NULL) {
        bitmap = new SkBitmap;
        bitmap = new SkBitmap;
Loading