summaryrefslogtreecommitdiff
path: root/core/java/android/view/ViewRoot.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/view/ViewRoot.java')
-rw-r--r--core/java/android/view/ViewRoot.java18
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() {