Attempt to fix infinite recursion.
When collapsing a panel without animating, it might be that an
overscroll animating was still running, and thus expandedHeight != 0
even if we set expandedFraction manually to 0, which sets the state
to STATE_OPEN again and tries to close it in an infinite loop.
Bug: 15721600
Change-Id: I14e0ee43fb4a47286d618cc97581d4e4a98fb2a2
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index a6ce5d5..c684c9f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -302,6 +302,8 @@
mUnlockIconActive = false;
mPageSwiper.reset();
closeQs();
+ mNotificationStackScroller.setOverScrollAmount(0f, true /* onTop */, false /* animate */,
+ true /* cancelAnimators */);
}
public void closeQs() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
index b94f6f3..b4faaaf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
@@ -188,10 +188,10 @@
pv.collapse();
waiting = true;
} else {
+ pv.resetViews();
pv.setExpandedFraction(0); // just in case
pv.setVisibility(View.GONE);
pv.cancelPeek();
- pv.resetViews();
}
}
if (DEBUG) LOG("collapseAllPanels: animate=%s waiting=%s", animate, waiting);