summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/java/com/android/server/usb/UsbDeviceSettingsManager.java26
1 files changed, 18 insertions, 8 deletions
diff --git a/services/java/com/android/server/usb/UsbDeviceSettingsManager.java b/services/java/com/android/server/usb/UsbDeviceSettingsManager.java
index 55138a7e4392..9a96e7fe4c3d 100644
--- a/services/java/com/android/server/usb/UsbDeviceSettingsManager.java
+++ b/services/java/com/android/server/usb/UsbDeviceSettingsManager.java
@@ -741,27 +741,37 @@ class UsbDeviceSettingsManager {
public void setDevicePackage(UsbDevice device, String packageName) {
DeviceFilter filter = new DeviceFilter(device);
+ boolean changed = false;
synchronized (mLock) {
if (packageName == null) {
- mDevicePreferenceMap.remove(filter);
+ changed = (mDevicePreferenceMap.remove(filter) != null);
} else {
- mDevicePreferenceMap.put(filter, packageName);
+ changed = !packageName.equals(mDevicePreferenceMap.get(filter));
+ if (changed) {
+ mDevicePreferenceMap.put(filter, packageName);
+ }
+ }
+ if (changed) {
+ writeSettingsLocked();
}
- // FIXME - only if changed
- writeSettingsLocked();
}
}
public void setAccessoryPackage(UsbAccessory accessory, String packageName) {
AccessoryFilter filter = new AccessoryFilter(accessory);
+ boolean changed = false;
synchronized (mLock) {
if (packageName == null) {
- mAccessoryPreferenceMap.remove(filter);
+ changed = (mAccessoryPreferenceMap.remove(filter) != null);
} else {
- mAccessoryPreferenceMap.put(filter, packageName);
+ changed = !packageName.equals(mAccessoryPreferenceMap.get(filter));
+ if (changed) {
+ mAccessoryPreferenceMap.put(filter, packageName);
+ }
+ }
+ if (changed) {
+ writeSettingsLocked();
}
- // FIXME - only if changed
- writeSettingsLocked();
}
}