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

Commit 5997e2ff authored by Maryam Dehaini's avatar Maryam Dehaini
Browse files

Release region after updating touchable region

remove_status_bar_input_layer flag is currently cauing a memory
regression. The only thing being created is the Region which, if not
properly recycled, can cause mem leaks.

Bug: 441740378
Flag: com.android.window.flags.enable_remove_status_bar_input_layer
Test: manual testing
Change-Id: I8f8d6badef94fdb0e0da6686cd9f412f03986910
parent e4fd8950
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -42,9 +42,7 @@ object HomeStatusBarTouchExclusionRegionBinder {
        // Update touchable regions when touchableExclusionRegion changes
        view.repeatWhenAttached {
            view.setSnapshotBinding {
                view.updateTouchableRegion(
                    calculateTouchableRegion(view, appHandlesViewModel.touchableExclusionRegion)
                )
                updateTouchableRegion(view, appHandlesViewModel.touchableExclusionRegion)
            }
            awaitCancellation()
        }
@@ -63,12 +61,16 @@ object HomeStatusBarTouchExclusionRegionBinder {
            if (top == oldTop && left == oldLeft && right == oldRight && bottom == oldBottom) {
                return@onLayoutChanged
            }
            view.updateTouchableRegion(
                calculateTouchableRegion(view, appHandlesViewModel.touchableExclusionRegion)
            )
            updateTouchableRegion(view, appHandlesViewModel.touchableExclusionRegion)
        }
    }

    private fun updateTouchableRegion(view: PhoneStatusBarView, touchableExclusionRegion: Region) {
        val touchableRegion = calculateTouchableRegion(view, touchableExclusionRegion)
        view.updateTouchableRegion(touchableRegion)
        touchableRegion.recycle()
    }

    private fun calculateTouchableRegion(
        view: PhoneStatusBarView,
        touchExclusionRegion: Region,