diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 414882a3ed96d..88605db0408a3 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -22811,6 +22811,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, */ boolean mKeepScreenOn; + /** + * Set during a traveral if the light center needs to be updated. + */ + boolean mNeedsUpdateLightCenter; + /** * Bitwise-or of all of the values that views have passed to setSystemUiVisibility(). */ diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index d812cb42c671b..0d648c12d23c8 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -80,7 +80,6 @@ import android.view.accessibility.IAccessibilityInteractionConnection; import android.view.accessibility.IAccessibilityInteractionConnectionCallback; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.Interpolator; -import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputMethodManager; import android.widget.Scroller; @@ -920,6 +919,11 @@ public final class ViewRootImpl implements ViewParent, // Recompute system ui visibility. mAttachInfo.mRecomputeGlobalAttributes = true; } + if ((mWindowAttributesChangesFlag + & WindowManager.LayoutParams.LAYOUT_CHANGED) != 0) { + // Request to update light center. + mAttachInfo.mNeedsUpdateLightCenter = true; + } if (mWindowAttributes.packageName == null) { mWindowAttributes.packageName = mBasePackageName; } @@ -2226,13 +2230,16 @@ public final class ViewRootImpl implements ViewParent, } mAttachInfo.mWindowLeft = frame.left; mAttachInfo.mWindowTop = frame.top; - - // Update the light position for the new window offsets. + } + if (windowMoved || mAttachInfo.mNeedsUpdateLightCenter) { + // Update the light position for the new offsets. if (mAttachInfo.mHardwareRenderer != null) { mAttachInfo.mHardwareRenderer.setLightCenter(mAttachInfo); } + mAttachInfo.mNeedsUpdateLightCenter = false; } } + private void handleOutOfResourcesException(Surface.OutOfResourcesException e) { Log.e(mTag, "OutOfResourcesException initializing HW surface", e); try {