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

Commit bdfb7ffa 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 udc-dev am: 653c1079

parents 0875158e 653c1079
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;
                });
    }
}