summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jason Monk <jmonk@google.com> 2016-01-30 12:49:41 -0500
committer Jason Monk <jmonk@google.com> 2016-01-30 12:49:41 -0500
commitc17d3298255357ce6e49d889cb4548e33004344c (patch)
tree435ed286150256e8988f3f249de6e18257ec5274
parent650e3b70e4aa2fa9acf2f9c6ce211c4b46862c15 (diff)
Fix rare crash in bt detail panel
Since bond state is gotten directly from the bluetooth stack it is possible it could change, and therefore change the number of devices if pairing happens while the detail panel is updating. Fix this by just dropping them into a list. Bug: 26258223 Change-Id: I7703520391798fd7c9ab097b0057b7b43b877212
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java19
1 files changed, 4 insertions, 15 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index dbb7423f6e56..874fc3ec0b88 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -34,6 +34,7 @@ import com.android.systemui.qs.QSDetailItems.Item;
import com.android.systemui.qs.QSTile;
import com.android.systemui.statusbar.policy.BluetoothController;
+import java.util.ArrayList;
import java.util.Collection;
/** Quick settings tile: Bluetooth **/
@@ -217,11 +218,9 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
private void updateItems() {
if (mItems == null) return;
- Item[] items = null;
+ ArrayList<Item> items = new ArrayList<Item>();
final Collection<CachedBluetoothDevice> devices = mController.getDevices();
if (devices != null) {
- items = new Item[getBondedCount(devices)];
- int i = 0;
for (CachedBluetoothDevice device : devices) {
if (device.getBondState() == BluetoothDevice.BOND_NONE) continue;
final Item item = new Item();
@@ -237,20 +236,10 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
item.line2 = mContext.getString(R.string.quick_settings_connecting);
}
item.tag = device;
- items[i++] = item;
+ items.add(item);
}
}
- mItems.setItems(items);
- }
-
- private int getBondedCount(Collection<CachedBluetoothDevice> devices) {
- int ct = 0;
- for (CachedBluetoothDevice device : devices) {
- if (device.getBondState() != BluetoothDevice.BOND_NONE) {
- ct++;
- }
- }
- return ct;
+ mItems.setItems(items.toArray(new Item[items.size()]));
}
@Override