diff options
Diffstat (limited to 'core/java/android/view/ViewRoot.java')
| -rw-r--r-- | core/java/android/view/ViewRoot.java | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java index 7b20b8be8817..cb9f84da39b9 100644 --- a/core/java/android/view/ViewRoot.java +++ b/core/java/android/view/ViewRoot.java @@ -207,6 +207,8 @@ public final class ViewRoot extends Handler implements ViewParent, View.AttachIn private final int mDensity; + private boolean mHasOverlay; + public static IWindowSession getWindowSession(Looper mainLooper) { synchronized (mStaticInit) { if (!mInitialized) { @@ -1357,6 +1359,9 @@ public final class ViewRoot extends Handler implements ViewParent, View.AttachIn canvas.setScreenDensity(scalingRequired ? DisplayMetrics.DENSITY_DEVICE : 0); mView.draw(canvas); + if (mHasOverlay) { + mView.onDrawOverlay(canvas); + } } finally { mAttachInfo.mIgnoreDirtyState = false; } @@ -2739,6 +2744,19 @@ public final class ViewRoot extends Handler implements ViewParent, View.AttachIn return scrollToRectOrFocus(rectangle, immediate); } + /** + * @hide + */ + public void childOverlayStateChanged(View child) { + final boolean oldState = mHasOverlay; + mHasOverlay = child.isOverlayEnabled(); + // Invalidate the whole thing when we change overlay states just in case + // something left chunks of data drawn someplace it shouldn't have. + if (mHasOverlay != oldState) { + child.invalidate(); + } + } + class TakenSurfaceHolder extends BaseSurfaceHolder { @Override public boolean onAllowLockCanvas() { |
