diff options
author | Mike Lockwood <lockwood@android.com> | 2011-03-01 12:00:09 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-03-01 12:00:09 -0800 |
commit | 6ebc6bde63d3d1591a1fea72e56487388c827aa6 (patch) | |
tree | 4ede99f62f7528f561ebda1503f2666cf4a82f2b | |
parent | b4948d4d3ff9e4fa42fbfcfa1d11ce08d42eec31 (diff) | |
parent | 31ad11eb44a1c5316ffb478314f4e5c55bf09d13 (diff) | |
download | frameworks_base-6ebc6bde63d3d1591a1fea72e56487388c827aa6.zip frameworks_base-6ebc6bde63d3d1591a1fea72e56487388c827aa6.tar.gz frameworks_base-6ebc6bde63d3d1591a1fea72e56487388c827aa6.tar.bz2 |
Merge "UsbDeviceSettingsManager: don't write settings file when not necessary"
-rw-r--r-- | services/java/com/android/server/usb/UsbDeviceSettingsManager.java | 26 |
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 55138a7..9a96e7f 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(); } } |