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

Commit 725d6fee authored by Hawkwood Glazier's avatar Hawkwood Glazier Committed by Automerger Merge Worker
Browse files

Merge "Only call saveLayerAlpha when alpha is not at max or min values" into...

Merge "Only call saveLayerAlpha when alpha is not at max or min values" into udc-dev am: 653c1079 am: 08be0484

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23261577



Change-Id: I175332a86a95bf35f73bdad13d1488b4629f9172
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents bd748b70 08be0484
Loading
Loading
Loading
Loading
+18 −5
Original line number Diff line number Diff line
@@ -18,14 +18,24 @@ class KeyguardClockFrame(
    }

    protected override fun dispatchDraw(canvas: Canvas) {
        val restoreTo = saveCanvasAlpha(this, canvas, drawAlpha)
        super.dispatchDraw(canvas)
        canvas.restoreToCount(restoreTo)
        saveCanvasAlpha(this, canvas, drawAlpha) { super.dispatchDraw(it) }
    }

    companion object {
        @JvmStatic
        fun saveCanvasAlpha(view: View, canvas: Canvas, alpha: Int): Int {
        fun saveCanvasAlpha(view: View, canvas: Canvas, alpha: Int, drawFunc: (Canvas) -> Unit) {
            if (alpha <= 0) {
                // Zero Alpha -> skip drawing phase
                return
            }

            if (alpha >= 255) {
                // Max alpha -> no need for layer
                drawFunc(canvas)
                return
            }

            // Find x & y of view on screen
            var (x, y) =
                run {
                    val locationOnScreen = IntArray(2)
@@ -33,7 +43,10 @@ class KeyguardClockFrame(
                    Pair(locationOnScreen[0].toFloat(), locationOnScreen[1].toFloat())
                }

            return canvas.saveLayerAlpha(-1f * x, -1f * y, x + view.width, y + view.height, alpha)
            val restoreTo =
                canvas.saveLayerAlpha(-1f * x, -1f * y, x + view.width, y + view.height, alpha)
            drawFunc(canvas)
            canvas.restoreToCount(restoreTo)
        }
    }
}
+6 −3
Original line number Diff line number Diff line
@@ -130,9 +130,12 @@ public class KeyguardClockSwitch extends RelativeLayout {

    @Override
    protected void dispatchDraw(Canvas canvas) {
        int restoreTo = KeyguardClockFrame.saveCanvasAlpha(this, canvas, mDrawAlpha);
        super.dispatchDraw(canvas);
        canvas.restoreToCount(restoreTo);
        KeyguardClockFrame.saveCanvasAlpha(
                this, canvas, mDrawAlpha,
                c -> {
                    super.dispatchDraw(c);
                    return kotlin.Unit.INSTANCE;
                });
    }

    public void setLogBuffer(LogBuffer logBuffer) {
+1 −3
Original line number Diff line number Diff line
@@ -17,8 +17,6 @@ class KeyguardStatusContainer(
    }

    protected override fun dispatchDraw(canvas: Canvas) {
        val restoreTo = KeyguardClockFrame.saveCanvasAlpha(this, canvas, drawAlpha)
        super.dispatchDraw(canvas)
        canvas.restoreToCount(restoreTo)
        KeyguardClockFrame.saveCanvasAlpha(this, canvas, drawAlpha) { super.dispatchDraw(canvas) }
    }
}
+6 −3
Original line number Diff line number Diff line
@@ -146,8 +146,11 @@ public class KeyguardStatusView extends GridLayout {

    @Override
    protected void dispatchDraw(Canvas canvas) {
        int restoreTo = KeyguardClockFrame.saveCanvasAlpha(this, canvas, mDrawAlpha);
        super.dispatchDraw(canvas);
        canvas.restoreToCount(restoreTo);
        KeyguardClockFrame.saveCanvasAlpha(
                this, canvas, mDrawAlpha,
                c -> {
                    super.dispatchDraw(c);
                    return kotlin.Unit.INSTANCE;
                });
    }
}