summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/ViewGroup.java19
-rw-r--r--libs/hwui/OpenGLRenderer.cpp7
2 files changed, 10 insertions, 16 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 17384c1eaf71..ac63742b6bbb 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -3254,13 +3254,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
// through
final boolean drawAnimation = (child.mPrivateFlags & DRAW_ANIMATION) == DRAW_ANIMATION;
- // Check whether the child that requests the invalidate is fully opaque
- final boolean isOpaque = child.isOpaque() && !drawAnimation &&
- child.getAnimation() == null;
- // Mark the child as dirty, using the appropriate flag
- // Make sure we do not set both flags at the same time
- final int opaqueFlag = isOpaque ? DIRTY_OPAQUE : DIRTY;
-
if (dirty == null) {
do {
View view = null;
@@ -3286,10 +3279,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
} else if (view != null) {
if ((mPrivateFlags & DRAWN) == DRAWN) {
view.mPrivateFlags &= ~DRAWING_CACHE_VALID;
- if (view != null && (view.mPrivateFlags & DIRTY_MASK) != DIRTY) {
- view.mPrivateFlags =
- (view.mPrivateFlags & ~DIRTY_MASK) | opaqueFlag;
- }
+ view.mPrivateFlags |= DIRTY;
parent = view.mParent;
} else {
parent = null;
@@ -3297,6 +3287,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
}
} while (parent != null);
} else {
+ // Check whether the child that requests the invalidate is fully opaque
+ final boolean isOpaque = child.isOpaque() && !drawAnimation &&
+ child.getAnimation() == null;
+ // Mark the child as dirty, using the appropriate flag
+ // Make sure we do not set both flags at the same time
+ final int opaqueFlag = isOpaque ? DIRTY_OPAQUE : DIRTY;
+
final int[] location = attachInfo.mInvalidateChildLocation;
location[CHILD_LEFT_INDEX] = child.mLeft;
location[CHILD_TOP_INDEX] = child.mTop;
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 9a6618b778b4..782d9b24c91f 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -147,13 +147,10 @@ void OpenGLRenderer::prepare(bool opaque) {
glDisable(GL_SCISSOR_TEST);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
- glEnable(GL_SCISSOR_TEST);
- } else {
- glEnable(GL_SCISSOR_TEST);
- glScissor(0, 0, mWidth, mHeight);
- dirtyClip();
}
+ glEnable(GL_SCISSOR_TEST);
+ glScissor(0, 0, mWidth, mHeight);
mSnapshot->setClip(0.0f, 0.0f, mWidth, mHeight);
}