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

Commit 12de672d authored by Lyn Han's avatar Lyn Han
Browse files

Set views below shelf explicitly invisible to skip hardware rendering

Bug: 191969252
Test: manual logs verified that viewState#applyToView
      invisibles views below shelf
Change-Id: I36e8a4e96d6830c5610649e5987b1e65add593fa
parent 576c548b
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -148,8 +148,22 @@ public class StackScrollAlgorithm {
            AmbientState ambientState) {

        NotificationShelf shelf = ambientState.getShelf();
        if (shelf != null) {
        if (shelf == null) {
            return;
        }

        shelf.updateState(algorithmState, ambientState);

        // After the shelf has updated its yTranslation,
        // explicitly hide views below the shelf to skip rendering them in the hardware layer.
        final float shelfTop = shelf.getViewState().yTranslation;

        for (ExpandableView view : algorithmState.visibleChildren) {
            final float viewTop = view.getViewState().yTranslation;

            if (viewTop >= shelfTop) {
                view.getViewState().hidden = true;
            }
        }
    }

@@ -411,8 +425,7 @@ public class StackScrollAlgorithm {
        } else {
            if (view != ambientState.getTrackedHeadsUpRow()) {
                if (ambientState.isExpansionChanging()) {
                    // Show all views. Views below the shelf will later be clipped (essentially
                    // hidden) in NotificationShelf.
                    // We later update shelf state, then hide views below the shelf.
                    viewState.hidden = false;
                    viewState.inShelf = algorithmState.firstViewInShelf != null
                            && i >= algorithmState.visibleChildren.indexOf(