Merge "Synchronize increment of resource cache generations" into udc-dev

This commit is contained in:
Yurii Zubrytskyi
2023-07-05 16:58:29 +00:00
committed by Android (Google) Code Review

View File

@@ -137,9 +137,11 @@ abstract class ThemedResourceCache<T> {
*/ */
@UnsupportedAppUsage @UnsupportedAppUsage
public void onConfigurationChange(@Config int configChanges) { public void onConfigurationChange(@Config int configChanges) {
prune(configChanges); synchronized (this) {
pruneLocked(configChanges);
mGeneration++; mGeneration++;
} }
}
/** /**
* Returns whether a cached entry has been invalidated by a configuration * Returns whether a cached entry has been invalidated by a configuration
@@ -214,8 +216,7 @@ abstract class ThemedResourceCache<T> {
* simply prune missing weak references * simply prune missing weak references
* @return {@code true} if the cache is completely empty after pruning * @return {@code true} if the cache is completely empty after pruning
*/ */
private boolean prune(@Config int configChanges) { private boolean pruneLocked(@Config int configChanges) {
synchronized (this) {
if (mThemedEntries != null) { if (mThemedEntries != null) {
for (int i = mThemedEntries.size() - 1; i >= 0; i--) { for (int i = mThemedEntries.size() - 1; i >= 0; i--) {
if (pruneEntriesLocked(mThemedEntries.valueAt(i), configChanges)) { if (pruneEntriesLocked(mThemedEntries.valueAt(i), configChanges)) {
@@ -230,7 +231,6 @@ abstract class ThemedResourceCache<T> {
return mThemedEntries == null && mNullThemedEntries == null return mThemedEntries == null && mNullThemedEntries == null
&& mUnthemedEntries == null; && mUnthemedEntries == null;
} }
}
private boolean pruneEntriesLocked(@Nullable LongSparseArray<WeakReference<T>> entries, private boolean pruneEntriesLocked(@Nullable LongSparseArray<WeakReference<T>> entries,
@Config int configChanges) { @Config int configChanges) {