Merge "Part of fixing issue #6006757: Keyboard dismissal lags" into ics-mr1

This commit is contained in:
Justin Ho
2012-02-16 09:23:01 -08:00
committed by Android (Google) Code Review

View File

@@ -355,8 +355,10 @@ public final class InputMethodManager {
if (mServedView != null && mServedView.isFocused()) {
mServedConnecting = true;
}
if (mActive) {
startInputInner();
}
}
startInputInner();
}
return;
}
@@ -1127,20 +1129,26 @@ public final class InputMethodManager {
* @hide
*/
public void checkFocus() {
if (checkFocusNoStartInput()) {
startInputInner();
}
}
private boolean checkFocusNoStartInput() {
// This is called a lot, so short-circuit before locking.
if (mServedView == mNextServedView && !mNextServedNeedsStart) {
return;
return false;
}
InputConnection ic = null;
synchronized (mH) {
if (mServedView == mNextServedView && !mNextServedNeedsStart) {
return;
return false;
}
if (DEBUG) Log.v(TAG, "checkFocus: view=" + mServedView
+ " next=" + mNextServedView
+ " restart=" + mNextServedNeedsStart);
mNextServedNeedsStart = false;
if (mNextServedView == null) {
finishInputLocked();
@@ -1148,22 +1156,22 @@ public final class InputMethodManager {
// but no longer do. We should make sure the input method is
// no longer shown, since it serves no purpose.
closeCurrentInput();
return;
return false;
}
ic = mServedInputConnection;
mServedView = mNextServedView;
mCurrentTextBoxAttribute = null;
mCompletions = null;
mServedConnecting = true;
}
if (ic != null) {
ic.finishComposingText();
}
startInputInner();
return true;
}
void closeCurrentInput() {
@@ -1192,7 +1200,7 @@ public final class InputMethodManager {
focusInLocked(focusedView != null ? focusedView : rootView);
}
checkFocus();
boolean startInput = checkFocusNoStartInput();
synchronized (mH) {
try {
@@ -1201,6 +1209,9 @@ public final class InputMethodManager {
mService.windowGainedFocus(mClient, rootView.getWindowToken(),
focusedView != null, isTextEditor, softInputMode, first,
windowFlags);
if (startInput) {
startInputInner();
}
} catch (RemoteException e) {
}
}