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

Commit e67307c8 authored by Romain Guy's avatar Romain Guy
Browse files

Prevent crash when setting up a stencil-based clip

Bug #8177690

Clear the layers before we setup the stencil to avoid dereferencing
the recently deleted rects.

Change-Id: I5dce5f965672f276f9490636d85b6018d3ab9422
parent f16c7a97
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -1179,6 +1179,10 @@ void OpenGLRenderer::clearLayerRegions() {

            delete bounds;
        }
        // We must clear the list of dirty rects before we
        // call setupDraw() to prevent stencil setup to do
        // the same thing again
        mLayers.clear();

        setupDraw(false);
        setupDrawColor(0.0f, 0.0f, 0.0f, 1.0f);
@@ -1195,10 +1199,9 @@ void OpenGLRenderer::clearLayerRegions() {
        for (uint32_t i = 0; i < count; i++) {
            delete mLayers.itemAt(i);
        }
    }

        mLayers.clear();
    }
}

///////////////////////////////////////////////////////////////////////////////
// Transforms
+4 −1
Original line number Diff line number Diff line
@@ -189,7 +189,10 @@ void Font::drawCachedGlyph(CachedGlyphInfo* glyph, float x, float hOffset, float
    vOffset += glyph->mBitmapTop + height;

    SkPoint destination[4];
    measure.getPosTan(x + hOffset + glyph->mBitmapLeft + halfWidth, position, tangent);
    bool ok = measure.getPosTan(x + hOffset + glyph->mBitmapLeft + halfWidth, position, tangent);
    if (!ok) {
        ALOGW("The path for drawTextOnPath is empty or null");
    }

    // Move along the tangent and offset by the normal
    destination[0].set(-tangent->fX * halfWidth - tangent->fY * vOffset,