diff options
| author | satok <satok@google.com> | 2011-01-31 18:31:46 -0800 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2011-01-31 18:31:46 -0800 |
| commit | c253fc0f8069c67eacf70def32436067584b5636 (patch) | |
| tree | 1c20122cb1a133592da0f5c64c9439033940e5d4 | |
| parent | 35af96c75b9530aa9a2c6d950536685c6774ddad (diff) | |
| parent | 076d059b54664b31920f0be13d56c657ab77cecc (diff) | |
| download | frameworks_base-c253fc0f8069c67eacf70def32436067584b5636.zip frameworks_base-c253fc0f8069c67eacf70def32436067584b5636.tar.gz frameworks_base-c253fc0f8069c67eacf70def32436067584b5636.tar.bz2 | |
am 076d059b: Merge "Not to update IME when Settings version is older than the last updated version." into honeycomb
* commit '076d059b54664b31920f0be13d56c657ab77cecc':
Not to update IME when Settings version is older than the last updated version.
| -rw-r--r-- | services/java/com/android/server/InputMethodManagerService.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index 586d222..6636fb7 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -60,6 +60,7 @@ import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ServiceManager; import android.os.SystemClock; +import android.os.SystemProperties; import android.provider.Settings; import android.provider.Settings.Secure; import android.provider.Settings.SettingNotFoundException; @@ -314,6 +315,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub int mBackDisposition = InputMethodService.BACK_DISPOSITION_DEFAULT; int mImeWindowVis; + long mOldSystemSettingsVersion; AlertDialog.Builder mDialogBuilder; AlertDialog mSwitchingDialog; @@ -486,6 +488,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub handleMessage(msg); } }); + // Initialize the system settings version to undefined. + mOldSystemSettingsVersion = -1; (new MyPackageMonitor()).register(mContext, true); @@ -1007,7 +1011,15 @@ public class InputMethodManagerService extends IInputMethodManager.Stub } } + // TODO: Investigate and fix why are settings changes getting processed before the settings seq + // number is updated? + // TODO: Change this stuff to not rely on modifying settings for normal user interactions. void updateFromSettingsLocked() { + long newSystemSettingsVersion = getSystemSettingsVersion(); + // This is a workaround to avoid a situation that old cached value in Settings.Secure + // will be handled. + if (newSystemSettingsVersion == mOldSystemSettingsVersion) return; + // We are assuming that whoever is changing DEFAULT_INPUT_METHOD and // ENABLED_INPUT_METHODS is taking care of keeping them correctly in // sync, so we will never have a DEFAULT_INPUT_METHOD that is not @@ -1958,6 +1970,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub private void setSelectedInputMethodAndSubtypeLocked(InputMethodInfo imi, int subtypeId, boolean setSubtypeOnly) { + mOldSystemSettingsVersion = getSystemSettingsVersion(); // Update the history of InputMethod and Subtype saveCurrentInputMethodAndSubtypeToHistory(); @@ -2207,6 +2220,10 @@ public class InputMethodManagerService extends IInputMethodManager.Stub } } + private static long getSystemSettingsVersion() { + return SystemProperties.getLong(Settings.Secure.SYS_PROP_SETTING_VERSION, 0); + } + /** * @return Return the current subtype of this input method. */ |
