summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author satok <satok@google.com> 2011-01-31 18:38:17 -0800
committer Android Git Automerger <android-git-automerger@android.com> 2011-01-31 18:38:17 -0800
commit4d29ac86e46600637bc17cc78b5b5abe1ed4ef66 (patch)
tree1589c918be66e031e06887ccabf09a697d439616
parent1ea48404373ef660a2d6a8f322e4d660eb744006 (diff)
parentc253fc0f8069c67eacf70def32436067584b5636 (diff)
am c253fc0f: am 076d059b: Merge "Not to update IME when Settings version is older than the last updated version." into honeycomb
* commit 'c253fc0f8069c67eacf70def32436067584b5636': Not to update IME when Settings version is older than the last updated version.
-rw-r--r--services/java/com/android/server/InputMethodManagerService.java17
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 586d222498b4..6636fb732747 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.
*/