diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/regionsampling/RegionSampler.kt b/packages/SystemUI/shared/src/com/android/systemui/shared/regionsampling/RegionSampler.kt index 0ca2f7a363112..0fbeb1a054a74 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/regionsampling/RegionSampler.kt +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/regionsampling/RegionSampler.kt @@ -202,8 +202,6 @@ constructor( fun calculateScreenLocation(sampledView: View): RectF? { - if (!sampledView.isLaidOut) return null - val screenLocation = tmpScreenLocation /** * The method getLocationOnScreen is used to obtain the view coordinates relative to its @@ -219,6 +217,10 @@ constructor( samplingBounds.right = left + sampledView.width samplingBounds.bottom = top + sampledView.height + // ensure never go out of bounds + if (samplingBounds.right > displaySize.x) samplingBounds.right = displaySize.x + if (samplingBounds.bottom > displaySize.y) samplingBounds.bottom = displaySize.y + return RectF(samplingBounds) } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt index 518825cea5e0e..cf3903860e94e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt @@ -137,6 +137,19 @@ constructor( updateTextColorFromWallpaper() statusBarStateListener.onDozeAmountChanged(0f, statusBarStateController.dozeAmount) + + if (regionSamplingEnabled && (!regionSamplers.containsKey(v))) { + var regionSampler = RegionSampler( + v as View, + uiExecutor, + bgExecutor, + regionSamplingEnabled, + isLockscreen = true, + ) { updateTextColorFromRegionSampler() } + initializeTextColors(regionSampler) + regionSamplers[v] = regionSampler + regionSampler.startRegionSampler() + } } override fun onViewDetachedFromWindow(v: View) { @@ -171,23 +184,6 @@ constructor( val filteredTargets = targets.filter(::filterSmartspaceTarget) plugin?.onTargetsAvailable(filteredTargets) - if (!isRegionSamplersCreated) { - for (v in smartspaceViews) { - if (regionSamplingEnabled) { - var regionSampler = RegionSampler( - v as View, - uiExecutor, - bgExecutor, - regionSamplingEnabled, - isLockscreen = true, - ) { updateTextColorFromRegionSampler() } - initializeTextColors(regionSampler) - regionSamplers[v] = regionSampler - regionSampler.startRegionSampler() - } - } - isRegionSamplersCreated = true - } } private val userTrackerCallback = object : UserTracker.Callback {