am 67bea2ef: Merge "Remove WindowManager messages from remote queue." into jb-mr2-dev
* commit '67bea2ef32198e5e246715998c1d907b73225761': Remove WindowManager messages from remote queue.
This commit is contained in:
@@ -284,6 +284,12 @@ class IInputMethodWrapper extends IInputMethod.Stub
|
||||
flags, resultReceiver));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeSoftInputMessages() {
|
||||
mCaller.removeMessages(DO_SHOW_SOFT_INPUT);
|
||||
mCaller.removeMessages(DO_HIDE_SOFT_INPUT);
|
||||
}
|
||||
|
||||
public void changeInputMethodSubtype(InputMethodSubtype subtype) {
|
||||
mCaller.executeOrSendMessage(mCaller.obtainMessageO(DO_CHANGE_INPUTMETHOD_SUBTYPE,
|
||||
subtype));
|
||||
|
||||
@@ -33,26 +33,28 @@ import com.android.internal.view.IInputMethodSession;
|
||||
* Service).
|
||||
* {@hide}
|
||||
*/
|
||||
oneway interface IInputMethod {
|
||||
void attachToken(IBinder token);
|
||||
interface IInputMethod {
|
||||
oneway void attachToken(IBinder token);
|
||||
|
||||
void bindInput(in InputBinding binding);
|
||||
oneway void bindInput(in InputBinding binding);
|
||||
|
||||
void unbindInput();
|
||||
oneway void unbindInput();
|
||||
|
||||
void startInput(in IInputContext inputContext, in EditorInfo attribute);
|
||||
oneway void startInput(in IInputContext inputContext, in EditorInfo attribute);
|
||||
|
||||
void restartInput(in IInputContext inputContext, in EditorInfo attribute);
|
||||
oneway void restartInput(in IInputContext inputContext, in EditorInfo attribute);
|
||||
|
||||
void createSession(IInputMethodCallback callback);
|
||||
oneway void createSession(IInputMethodCallback callback);
|
||||
|
||||
void setSessionEnabled(IInputMethodSession session, boolean enabled);
|
||||
oneway void setSessionEnabled(IInputMethodSession session, boolean enabled);
|
||||
|
||||
void revokeSession(IInputMethodSession session);
|
||||
oneway void revokeSession(IInputMethodSession session);
|
||||
|
||||
void showSoftInput(int flags, in ResultReceiver resultReceiver);
|
||||
oneway void showSoftInput(int flags, in ResultReceiver resultReceiver);
|
||||
|
||||
void hideSoftInput(int flags, in ResultReceiver resultReceiver);
|
||||
oneway void hideSoftInput(int flags, in ResultReceiver resultReceiver);
|
||||
|
||||
void changeInputMethodSubtype(in InputMethodSubtype subtype);
|
||||
void removeSoftInputMessages();
|
||||
|
||||
oneway void changeInputMethodSubtype(in InputMethodSubtype subtype);
|
||||
}
|
||||
|
||||
@@ -1199,7 +1199,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
mCurId = info.getId();
|
||||
mCurToken = new Binder();
|
||||
try {
|
||||
if (DEBUG) Slog.v(TAG, "Adding window token: " + mCurToken);
|
||||
if (true || DEBUG) Slog.v(TAG, "Adding window token: " + mCurToken);
|
||||
mIWindowManager.addWindowToken(mCurToken,
|
||||
WindowManager.LayoutParams.TYPE_INPUT_METHOD);
|
||||
} catch (RemoteException e) {
|
||||
@@ -1237,14 +1237,21 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
public void onServiceConnected(ComponentName name, IBinder service) {
|
||||
synchronized (mMethodMap) {
|
||||
if (mCurIntent != null && name.equals(mCurIntent.getComponent())) {
|
||||
IInputMethod prevMethod = mCurMethod;
|
||||
mCurMethod = IInputMethod.Stub.asInterface(service);
|
||||
if (mCurToken == null) {
|
||||
Slog.w(TAG, "Service connected without a token!");
|
||||
unbindCurrentMethodLocked(false, false);
|
||||
return;
|
||||
}
|
||||
// Remove commands relating to the previous service. Otherwise WindowManagerService
|
||||
// will reject the command because the token attached to these messages is invalid.
|
||||
// Remove messages relating to the previous service. Otherwise WindowManagerService
|
||||
// will throw a BadTokenException because the old token is being removed.
|
||||
if (prevMethod != null) {
|
||||
try {
|
||||
prevMethod.removeSoftInputMessages();
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
}
|
||||
mCaller.removeMessages(MSG_SHOW_SOFT_INPUT);
|
||||
mCaller.removeMessages(MSG_HIDE_SOFT_INPUT);
|
||||
if (true || DEBUG) Slog.v(TAG, "Initiating attach with token: " + mCurToken);
|
||||
@@ -2309,8 +2316,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
try {
|
||||
if (true || DEBUG) Slog.v(TAG, "Calling " + args.arg1 + ".showSoftInput("
|
||||
+ msg.arg1 + ", " + args.arg2 + ")");
|
||||
((IInputMethod)args.arg1).showSoftInput(msg.arg1,
|
||||
(ResultReceiver)args.arg2);
|
||||
((IInputMethod)args.arg1).showSoftInput(msg.arg1, (ResultReceiver)args.arg2);
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
args.recycle();
|
||||
@@ -2320,8 +2326,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
try {
|
||||
if (true || DEBUG) Slog.v(TAG, "Calling " + args.arg1 + ".hideSoftInput(0, "
|
||||
+ args.arg2 + ")");
|
||||
((IInputMethod)args.arg1).hideSoftInput(0,
|
||||
(ResultReceiver)args.arg2);
|
||||
((IInputMethod)args.arg1).hideSoftInput(0, (ResultReceiver)args.arg2);
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
args.recycle();
|
||||
|
||||
Reference in New Issue
Block a user