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

Commit f209c06d authored by Derek Sollenberger's avatar Derek Sollenberger
Browse files

Don't crash when presented with non-roundRect clipping outline.

We still won't clip to the outline to match existing HWUI behavior.

Test: CTS Graphics and hwui_unit_tests pass
Bug: 38411077
Change-Id: Ia3161df77a4ccaf0e714d2fe1ac12396d1c8f9e9
parent 70739fb8
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -61,8 +61,17 @@ void RenderNodeDrawable::drawBackwardsProjectedNodes(SkCanvas* canvas, const Ski
static void clipOutline(const Outline& outline, SkCanvas* canvas, const SkRect* pendingClip) {
    Rect possibleRect;
    float radius;
    LOG_ALWAYS_FATAL_IF(!outline.getAsRoundRect(&possibleRect, &radius),
            "clipping outlines should be at most roundedRects");

    /* To match the existing HWUI behavior we only supports rectangles or
     * rounded rectangles; passing in a more complicated outline fails silently.
     */
    if (!outline.getAsRoundRect(&possibleRect, &radius)) {
        if (pendingClip) {
            canvas->clipRect(*pendingClip);
        }
        return;
    }

    SkRect rect = possibleRect.toSkRect();
    if (radius != 0.0f) {
        if (pendingClip && !pendingClip->contains(rect)) {