mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-02 17:06:49 +00:00
Fix ConcurrentModificationExceptions during binding.
The same lists of extra items stored in BgModelData are also stored in UI components. This is causing ConcurrentModificationExceptions. The solution is to clone these lists or mark them as immutable before storing them in their respective components. Bug: 206918543 Test: Verified that crash no longer occurs after fix. Change-Id: I571a2c451af58137aa7513b372b6a8ecf9bd3ff6
This commit is contained in:
@@ -34,8 +34,10 @@ import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.model.BgDataModel.FixedContainerItems;
|
||||
import com.android.launcher3.model.QuickstepModelDelegate.PredictorState;
|
||||
import com.android.launcher3.model.data.AppInfo;
|
||||
import com.android.launcher3.model.data.ItemInfo;
|
||||
import com.android.launcher3.model.data.WorkspaceItemInfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -68,7 +70,7 @@ public class PredictionUpdateTask extends BaseModelUpdateTask {
|
||||
.map(info -> info.user)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
FixedContainerItems fci = new FixedContainerItems(mPredictorState.containerId);
|
||||
List<ItemInfo> items = new ArrayList<>(mTargets.size());
|
||||
for (AppTarget target : mTargets) {
|
||||
WorkspaceItemInfo itemInfo;
|
||||
ShortcutInfo si = target.getShortcutInfo();
|
||||
@@ -107,10 +109,11 @@ public class PredictionUpdateTask extends BaseModelUpdateTask {
|
||||
}
|
||||
}
|
||||
|
||||
itemInfo.container = fci.containerId;
|
||||
fci.items.add(itemInfo);
|
||||
itemInfo.container = mPredictorState.containerId;
|
||||
items.add(itemInfo);
|
||||
}
|
||||
|
||||
FixedContainerItems fci = new FixedContainerItems(mPredictorState.containerId, items);
|
||||
dataModel.extraItems.put(fci.containerId, fci);
|
||||
bindExtraContainerItems(fci);
|
||||
usersForChangedShortcuts.forEach(
|
||||
|
||||
Reference in New Issue
Block a user