Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 494081aa authored by Chet Haase's avatar Chet Haase Committed by Android (Google) Code Review
Browse files

Merge "Fix GL rendering of translucent surfaces"

parents e7f33961 0d200833
Loading
Loading
Loading
Loading
+8 −11
Original line number Diff line number Diff line
@@ -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;
+2 −5
Original line number Diff line number Diff line
@@ -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);
}