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

Commit ca3c7f2d authored by Florence Yang's avatar Florence Yang Committed by Automerger Merge Worker
Browse files

Merge "Fix RegionSampler crashes" into tm-qpr-dev am: 63afdb25

parents 76ebd494 63afdb25
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -91,6 +91,22 @@ constructor(
        val sampledRegion = calculateSampledRegion(sampledView)
        val regions = ArrayList<RectF>()
        val sampledRegionWithOffset = convertBounds(sampledRegion)

        if (
            sampledRegionWithOffset.left < 0.0 ||
                sampledRegionWithOffset.right > 1.0 ||
                sampledRegionWithOffset.top < 0.0 ||
                sampledRegionWithOffset.bottom > 1.0
        ) {
            android.util.Log.e(
                "RegionSampler",
                "view out of bounds: $sampledRegion | " +
                    "screen width: ${displaySize.x}, screen height: ${displaySize.y}",
                Exception()
            )
            return
        }

        regions.add(sampledRegionWithOffset)

        wallpaperManager?.removeOnColorsChangedListener(this)
+9 −29
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.res.Resources
import android.graphics.Rect
import android.text.format.DateFormat
import android.util.TypedValue
import android.view.View
@@ -119,10 +120,6 @@ constructor(

    private val mLayoutChangedListener =
        object : View.OnLayoutChangeListener {
            private var currentSmallClockView: View? = null
            private var currentLargeClockView: View? = null
            private var currentSmallClockLocation = IntArray(2)
            private var currentLargeClockLocation = IntArray(2)

            override fun onLayoutChange(
                view: View?,
@@ -135,6 +132,8 @@ constructor(
                oldRight: Int,
                oldBottom: Int
            ) {
                view?.removeOnLayoutChangeListener(this)

                val parent = (view?.parent) as FrameLayout

                // don't pass in negative bounds when clocks are in transition state
@@ -142,34 +141,15 @@ constructor(
                    return
                }

                // SMALL CLOCK
                if (parent.id == R.id.lockscreen_clock_view) {
                    // view bounds have changed due to clock size changing (i.e. different character
                    // widths)
                    // AND/OR the view has been translated when transitioning between small and
                    // large clock
                    if (
                        view != currentSmallClockView ||
                            !view.locationOnScreen.contentEquals(currentSmallClockLocation)
                    ) {
                        currentSmallClockView = view
                        currentSmallClockLocation = view.locationOnScreen
                        updateRegionSampler(view)
                    }
                }
                // LARGE CLOCK
                else if (parent.id == R.id.lockscreen_clock_view_large) {
                    if (
                        view != currentLargeClockView ||
                            !view.locationOnScreen.contentEquals(currentLargeClockLocation)
                    ) {
                        currentLargeClockView = view
                        currentLargeClockLocation = view.locationOnScreen
                val currentViewRect = Rect(left, top, right, bottom)
                val oldViewRect = Rect(oldLeft, oldTop, oldRight, oldBottom)

                if (currentViewRect.width() != oldViewRect.width() ||
                    currentViewRect.height() != oldViewRect.height()) {
                    updateRegionSampler(view)
                }
            }
        }
        }

    private fun updateColors() {
        val wallpaperManager = WallpaperManager.getInstance(context)
+4 −2
Original line number Diff line number Diff line
@@ -500,10 +500,12 @@ constructor(

    private fun updateTextColorFromRegionSampler() {
        smartspaceViews.forEach {
            val textColor = regionSamplers.getValue(it).currentForegroundColor()
            val textColor = regionSamplers.get(it)?.currentForegroundColor()
            if (textColor != null) {
                it.setPrimaryTextColor(textColor)
            }
        }
    }

    private fun updateTextColorFromWallpaper() {
        val wallpaperManager = WallpaperManager.getInstance(context)