Fix race condition in MTP/PTP checkbox updating

UsbManager.getDefaultFunction() might not return the updated state immediately
after changing the USB configuration, so do not rely on it for updating
after a checkbox has been clicked.

Change-Id: I5ae8d46854f24403cda2c62e006c742dcd257d1d
Bug: 5334777

Signed-off-by: Mike Lockwood <lockwood@android.com>
This commit is contained in:
Mike Lockwood
2011-09-18 17:52:54 -04:00
parent c57b135d56
commit ed9d461818

View File

@@ -51,7 +51,7 @@ public class UsbSettings extends SettingsPreferenceFragment {
private final BroadcastReceiver mStateReceiver = new BroadcastReceiver() {
public void onReceive(Context content, Intent intent) {
updateToggles();
updateToggles(mUsbManager.getDefaultFunction());
}
};
@@ -94,8 +94,7 @@ public class UsbSettings extends SettingsPreferenceFragment {
new IntentFilter(UsbManager.ACTION_USB_STATE));
}
private void updateToggles() {
String function = mUsbManager.getDefaultFunction();
private void updateToggles(String function) {
if (UsbManager.USB_FUNCTION_MTP.equals(function)) {
mMtp.setChecked(true);
mPtp.setChecked(false);
@@ -122,10 +121,11 @@ public class UsbSettings extends SettingsPreferenceFragment {
}
if (preference == mMtp) {
mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MTP, true);
updateToggles(UsbManager.USB_FUNCTION_MTP);
} else if (preference == mPtp) {
mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_PTP, true);
updateToggles(UsbManager.USB_FUNCTION_PTP);
}
updateToggles();
return true;
}
}