Merge "[res] Preserve the resid order in ThemeKey" into udc-dev am: 375d648950
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23755569 Change-Id: I07f9beb198c20255bd08888bec2fedd5446a7a72 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -2003,13 +2003,25 @@ public class Resources {
|
||||
|
||||
private int mHashCode = 0;
|
||||
|
||||
private boolean containsValue(int resId, boolean force) {
|
||||
private int findValue(int resId, boolean force) {
|
||||
for (int i = 0; i < mCount; ++i) {
|
||||
if (mResId[i] == resId && mForce[i] == force) {
|
||||
return true;
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
private void moveToLast(int index) {
|
||||
if (index < 0 || index >= mCount - 1) {
|
||||
return;
|
||||
}
|
||||
final int id = mResId[index];
|
||||
final boolean force = mForce[index];
|
||||
System.arraycopy(mResId, index + 1, mResId, index, mCount - index - 1);
|
||||
mResId[mCount - 1] = id;
|
||||
System.arraycopy(mForce, index + 1, mForce, index, mCount - index - 1);
|
||||
mForce[mCount - 1] = force;
|
||||
}
|
||||
|
||||
public void append(int resId, boolean force) {
|
||||
@@ -2022,15 +2034,17 @@ public class Resources {
|
||||
}
|
||||
|
||||
// Some apps tend to keep adding same resources over and over, let's protect from it.
|
||||
if (containsValue(resId, force)) {
|
||||
return;
|
||||
// Note: the order still matters, as the values that come later override the earlier
|
||||
// ones.
|
||||
final int index = findValue(resId, force);
|
||||
if (index >= 0) {
|
||||
moveToLast(index);
|
||||
} else {
|
||||
mResId = GrowingArrayUtils.append(mResId, mCount, resId);
|
||||
mForce = GrowingArrayUtils.append(mForce, mCount, force);
|
||||
mCount++;
|
||||
mHashCode = 31 * (31 * mHashCode + resId) + (force ? 1 : 0);
|
||||
}
|
||||
|
||||
mResId = GrowingArrayUtils.append(mResId, mCount, resId);
|
||||
mForce = GrowingArrayUtils.append(mForce, mCount, force);
|
||||
mCount++;
|
||||
|
||||
mHashCode = 31 * (31 * mHashCode + resId) + (force ? 1 : 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user