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

Commit 0e33ef2c authored by Daniel Sandler's avatar Daniel Sandler Committed by Android Git Automerger
Browse files

am 25a5f301: Merge "Use ashmem backed bitmaps for passing around notifications" into mnc-dev

* commit '25a5f301':
  Use ashmem backed bitmaps for passing around notifications
parents 4ddc0add 25a5f301
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -3586,12 +3586,19 @@ public class Notification implements Parcelable
         * object.
         */
        public Notification build() {
            if (mSmallIcon != null) {
                mSmallIcon.convertToAshmem();
            }
            if (mLargeIcon != null) {
                mLargeIcon.convertToAshmem();
            }
            mOriginatingUserId = mContext.getUserId();
            mHasThreeLines = hasThreeLines();

            Notification n = buildUnstyled();

            if (mStyle != null) {
                mStyle.purgeResources();
                n = mStyle.buildStyled(n);
            }

@@ -3790,6 +3797,8 @@ public class Notification implements Parcelable
            return wip;
        }

        public void purgeResources() {}

        // The following methods are split out so we can re-create notification partially.
        /**
         * @hide
@@ -3901,8 +3910,18 @@ public class Notification implements Parcelable
            return this;
        }

        private RemoteViews makeBigContentView() {
        @Override
        public void purgeResources() {
            super.purgeResources();
            if (mPicture != null && mPicture.isMutable()) {
                mPicture = mPicture.createAshmemBitmap();
            }
            if (mBigLargeIcon != null) {
                mBigLargeIcon.convertToAshmem();
            }
        }

        private RemoteViews makeBigContentView() {
            // Replace mLargeIcon with mBigLargeIcon if mBigLargeIconSet
            // This covers the following cases:
            //   1. mBigLargeIconSet -> mBigLargeIcon (null or non-null) applies, overrides
+15 −1
Original line number Diff line number Diff line
@@ -109,6 +109,10 @@ public final class Icon implements Parcelable {
        return (Bitmap) mObj1;
    }

    private void setBitmap(Bitmap b) {
        mObj1 = b;
    }

    /**
     * @return The length of the compressed bitmap byte array held by this {@link #TYPE_DATA} Icon.
     * @hide
@@ -346,6 +350,16 @@ public final class Icon implements Parcelable {
        return loadDrawable(context);
    }

    /**
     * Puts the memory used by this instance into Ashmem memory, if possible.
     * @hide
     */
    public void convertToAshmem() {
        if (mType == TYPE_BITMAP && getBitmap().isMutable()) {
            setBitmap(getBitmap().createAshmemBitmap());
        }
    }

    /**
     * Writes a serialized version of an Icon to the specified stream.
     *
@@ -466,7 +480,7 @@ public final class Icon implements Parcelable {
            throw new IllegalArgumentException("Bitmap must not be null.");
        }
        final Icon rep = new Icon(TYPE_BITMAP);
        rep.mObj1 = bits;
        rep.setBitmap(bits);
        return rep;
    }