From ed9d461818780a6c38a081030a55983ea0883fa6 Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Sun, 18 Sep 2011 17:52:54 -0400 Subject: [PATCH] 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 --- src/com/android/settings/deviceinfo/UsbSettings.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/deviceinfo/UsbSettings.java b/src/com/android/settings/deviceinfo/UsbSettings.java index 538cde7565e..44ecff4d2a8 100644 --- a/src/com/android/settings/deviceinfo/UsbSettings.java +++ b/src/com/android/settings/deviceinfo/UsbSettings.java @@ -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; } }