Merge "Refactor dispatching the focus event from handleWindowFocusChanged" into tm-qpr-dev am: baa7f98f58
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20608952 Change-Id: Ib6cf423199150f3247200ab31303fcc5722d05cd Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -3801,44 +3801,7 @@ public final class ViewRootImpl implements ViewParent,
|
||||
}
|
||||
|
||||
if (mAdded) {
|
||||
profileRendering(hasWindowFocus);
|
||||
if (hasWindowFocus) {
|
||||
if (mAttachInfo.mThreadedRenderer != null && mSurface.isValid()) {
|
||||
mFullRedrawNeeded = true;
|
||||
try {
|
||||
final Rect surfaceInsets = mWindowAttributes.surfaceInsets;
|
||||
mAttachInfo.mThreadedRenderer.initializeIfNeeded(
|
||||
mWidth, mHeight, mAttachInfo, mSurface, surfaceInsets);
|
||||
} catch (OutOfResourcesException e) {
|
||||
Log.e(mTag, "OutOfResourcesException locking surface", e);
|
||||
try {
|
||||
if (!mWindowSession.outOfMemory(mWindow)) {
|
||||
Slog.w(mTag, "No processes killed for memory;"
|
||||
+ " killing self");
|
||||
Process.killProcess(Process.myPid());
|
||||
}
|
||||
} catch (RemoteException ex) {
|
||||
}
|
||||
// Retry in a bit.
|
||||
mHandler.sendMessageDelayed(mHandler.obtainMessage(
|
||||
MSG_WINDOW_FOCUS_CHANGED), 500);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mAttachInfo.mHasWindowFocus = hasWindowFocus;
|
||||
mImeFocusController.updateImeFocusable(mWindowAttributes, true /* force */);
|
||||
mImeFocusController.onPreWindowFocus(hasWindowFocus, mWindowAttributes);
|
||||
|
||||
if (mView != null) {
|
||||
mAttachInfo.mKeyDispatchState.reset();
|
||||
mView.dispatchWindowFocusChanged(hasWindowFocus);
|
||||
mAttachInfo.mTreeObserver.dispatchOnWindowFocusChange(hasWindowFocus);
|
||||
if (mAttachInfo.mTooltipHost != null) {
|
||||
mAttachInfo.mTooltipHost.hideTooltip();
|
||||
}
|
||||
}
|
||||
dispatchFocusEvent(hasWindowFocus);
|
||||
|
||||
// Note: must be done after the focus change callbacks,
|
||||
// so all of the view state is set up correctly.
|
||||
@@ -3874,6 +3837,45 @@ public final class ViewRootImpl implements ViewParent,
|
||||
}
|
||||
}
|
||||
|
||||
private void dispatchFocusEvent(boolean hasWindowFocus) {
|
||||
profileRendering(hasWindowFocus);
|
||||
if (hasWindowFocus && mAttachInfo.mThreadedRenderer != null && mSurface.isValid()) {
|
||||
mFullRedrawNeeded = true;
|
||||
try {
|
||||
final Rect surfaceInsets = mWindowAttributes.surfaceInsets;
|
||||
mAttachInfo.mThreadedRenderer.initializeIfNeeded(
|
||||
mWidth, mHeight, mAttachInfo, mSurface, surfaceInsets);
|
||||
} catch (OutOfResourcesException e) {
|
||||
Log.e(mTag, "OutOfResourcesException locking surface", e);
|
||||
try {
|
||||
if (!mWindowSession.outOfMemory(mWindow)) {
|
||||
Slog.w(mTag, "No processes killed for memory;"
|
||||
+ " killing self");
|
||||
Process.killProcess(Process.myPid());
|
||||
}
|
||||
} catch (RemoteException ex) {
|
||||
}
|
||||
// Retry in a bit.
|
||||
mHandler.sendMessageDelayed(mHandler.obtainMessage(
|
||||
MSG_WINDOW_FOCUS_CHANGED), 500);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
mAttachInfo.mHasWindowFocus = hasWindowFocus;
|
||||
mImeFocusController.updateImeFocusable(mWindowAttributes, true /* force */);
|
||||
mImeFocusController.onPreWindowFocus(hasWindowFocus, mWindowAttributes);
|
||||
|
||||
if (mView != null) {
|
||||
mAttachInfo.mKeyDispatchState.reset();
|
||||
mView.dispatchWindowFocusChanged(hasWindowFocus);
|
||||
mAttachInfo.mTreeObserver.dispatchOnWindowFocusChange(hasWindowFocus);
|
||||
if (mAttachInfo.mTooltipHost != null) {
|
||||
mAttachInfo.mTooltipHost.hideTooltip();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleWindowTouchModeChanged() {
|
||||
final boolean inTouchMode;
|
||||
synchronized (this) {
|
||||
|
||||
Reference in New Issue
Block a user