summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNarayan Kamath <narayan@google.com>2012-01-20 17:52:02 +0000
committerNarayan Kamath <narayan@google.com>2012-01-20 17:52:02 +0000
commit2d8101bc8bb27c3c7e090f706ac40a3612507813 (patch)
treebc56194b7c7a1c37eb3fb325760e1a4c73227d59
parentaf48709993faeb0d3665eb6a491aaec701e1ccd5 (diff)
downloadpackages_apps_settings-2d8101bc8bb27c3c7e090f706ac40a3612507813.zip
packages_apps_settings-2d8101bc8bb27c3c7e090f706ac40a3612507813.tar.gz
packages_apps_settings-2d8101bc8bb27c3c7e090f706ac40a3612507813.tar.bz2
Fix a pseudo race condition in TtsEngineSettingsFragment.
The issue is that Fragment.setVoiceDataDetails can be called before Fragment.getView. We guard against this issue. No thread visibility issues here because both functions are called on the UI thread. bug:5884355 Change-Id: Iad91b91c58b04dcb9f34f6b5ff8752f2e8295423
-rw-r--r--src/com/android/settings/tts/TtsEnginePreference.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/com/android/settings/tts/TtsEnginePreference.java b/src/com/android/settings/tts/TtsEnginePreference.java
index b98a239..196882f 100644
--- a/src/com/android/settings/tts/TtsEnginePreference.java
+++ b/src/com/android/settings/tts/TtsEnginePreference.java
@@ -155,12 +155,21 @@ public class TtsEnginePreference extends Preference {
}
});
+ if (mVoiceCheckData != null) {
+ mSettingsIcon.setEnabled(mRadioButton.isChecked());
+ }
+
return view;
}
public void setVoiceDataDetails(Intent data) {
mVoiceCheckData = data;
- mSettingsIcon.setEnabled(mRadioButton.isChecked());
+ // This might end up running before getView aboive, in which
+ // case mSettingsIcon && mRadioButton will be null. In this case
+ // getView will set the right values.
+ if (mSettingsIcon != null && mRadioButton != null) {
+ mSettingsIcon.setEnabled(mRadioButton.isChecked());
+ }
}
private void onRadioButtonClicked(CompoundButton buttonView, boolean isChecked) {