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

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

Merge "Fix layer blending bug"

parents f6584a70 a23eed80
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -818,7 +818,10 @@ status_t DisplayList::replay(OpenGLRenderer& renderer, uint32_t width,
        indent[i] = ' ';
    }
    indent[count] = '\0';
    DISPLAY_LIST_LOGD("%sStart display list (%p, %s)", (char*) indent + 2, this, mName.string());
    Rect* clipRect = renderer.getClipRect();
    DISPLAY_LIST_LOGD("%sStart display list (%p, %s), clipRect: %.0f, %.f, %.0f, %.0f",
            (char*) indent + 2, this, mName.string(), clipRect->left, clipRect->top,
            clipRect->right, clipRect->bottom);
#endif

    renderer.startMark(mName.string());
+5 −0
Original line number Diff line number Diff line
@@ -520,6 +520,7 @@ bool OpenGLRenderer::createLayer(sp<Snapshot> snapshot, float left, float top,
    layer->texCoords.set(0.0f, bounds.getHeight() / float(layer->getHeight()),
            bounds.getWidth() / float(layer->getWidth()), 0.0f);
    layer->setColorFilter(mColorFilter);
    layer->setBlend(true);

    // Save the layer in the snapshot
    snapshot->flags |= Snapshot::kFlagIsLayer;
@@ -1058,6 +1059,10 @@ bool OpenGLRenderer::clipRect(float left, float top, float right, float bottom,
    return !mSnapshot->clipRect->isEmpty();
}

Rect* OpenGLRenderer::getClipRect() {
    return mSnapshot->clipRect;
}

///////////////////////////////////////////////////////////////////////////////
// Drawing commands
///////////////////////////////////////////////////////////////////////////////
+1 −0
Original line number Diff line number Diff line
@@ -101,6 +101,7 @@ public:
    ANDROID_API const Rect& getClipBounds();
    ANDROID_API bool quickReject(float left, float top, float right, float bottom);
    virtual bool clipRect(float left, float top, float right, float bottom, SkRegion::Op op);
    virtual Rect* getClipRect();

    virtual status_t drawDisplayList(DisplayList* displayList, uint32_t width, uint32_t height,
            Rect& dirty, int32_t flags, uint32_t level = 0);