Only relayout when mIgnoredSlots changes

This avoids relayouting sysui when calling add/removeIgnoredSlot has no
effect.

Bug: 190379081
Test: https://ui.perfetto.dev/#!/viewer?trace_id=c57e4aca-d306-66b0-df47-009944328158
Change-Id: I9e5d5c3bfe20c8df10b779e39cdab39ebf95573b
This commit is contained in:
Lucas Dupin
2022-02-03 10:43:28 -08:00
parent ee754300bf
commit 51dfd53f36

View File

@@ -217,8 +217,10 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout {
* frameworks/base/core/res/res/values/config.xml
*/
public void addIgnoredSlot(String slotName) {
addIgnoredSlotInternal(slotName);
requestLayout();
boolean added = addIgnoredSlotInternal(slotName);
if (added) {
requestLayout();
}
}
/**
@@ -226,17 +228,27 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout {
* @param slots names of the icons to ignore
*/
public void addIgnoredSlots(List<String> slots) {
boolean willAddAny = false;
for (String slot : slots) {
addIgnoredSlotInternal(slot);
willAddAny |= addIgnoredSlotInternal(slot);
}
requestLayout();
if (willAddAny) {
requestLayout();
}
}
private void addIgnoredSlotInternal(String slotName) {
if (!mIgnoredSlots.contains(slotName)) {
mIgnoredSlots.add(slotName);
/**
*
* @param slotName
* @return
*/
private boolean addIgnoredSlotInternal(String slotName) {
if (mIgnoredSlots.contains(slotName)) {
return false;
}
mIgnoredSlots.add(slotName);
return true;
}
/**
@@ -245,9 +257,10 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout {
* @param slotName name of the icon slot to remove from the ignored list
*/
public void removeIgnoredSlot(String slotName) {
mIgnoredSlots.remove(slotName);
requestLayout();
boolean removed = mIgnoredSlots.remove(slotName);
if (removed) {
requestLayout();
}
}
/**
@@ -256,11 +269,14 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout {
* @param slots name of the icon slots to remove from the ignored list
*/
public void removeIgnoredSlots(List<String> slots) {
boolean removedAny = false;
for (String slot : slots) {
mIgnoredSlots.remove(slot);
removedAny |= mIgnoredSlots.remove(slot);
}
requestLayout();
if (removedAny) {
requestLayout();
}
}
/**