RESOLVED FIXED 57907
Skia incorrectly draws fillRoundedRect
https://bugs.webkit.org/show_bug.cgi?id=57907
Summary Skia incorrectly draws fillRoundedRect
Adrienne Walker
Reported 2011-04-05 17:02:36 PDT
http://trac.webkit.org/changeset/82969/trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp turned on a new fast path for rendering rounded corners. This broke a number of tests: http://test-results.appspot.com/dashboards/flakiness_dashboard.html#master=ChromiumWebkit&tests=fast/blockflow/border-radius-clipping-vertical-lr.html,fast/blockflow/box-shadow-horizontal-bt.html,fast/blockflow/box-shadow-vertical-lr.html,fast/blockflow/box-shadow-vertical-rl.html,fast/borders/border-radius-huge-assert.html,fast/borders/borderRadiusAllStylesAllCorners.html,fast/borders/borderRadiusArcs01.html,fast/borders/borderRadiusDashed01.html,fast/borders/borderRadiusDashed02.html,fast/borders/borderRadiusDashed03.html,fast/borders/borderRadiusDotted01.html,fast/borders/borderRadiusDotted02.html,fast/borders/borderRadiusDotted03.html,fast/borders/borderRadiusDouble01.html,fast/borders/borderRadiusDouble02.html,fast/borders/borderRadiusDouble03.html,fast/borders/borderRadiusGroove01.html,fast/borders/borderRadiusGroove02.html,fast/borders/borderRadiusInset01.html,fast/borders/borderRadiusInvalidColor.html,fast/borders/borderRadiusOutset01.html,fast/borders/borderRadiusRidge01.html,fast/borders/borderRadiusSolid01.html,fast/borders/borderRadiusSolid02.html,fast/borders/borderRadiusSolid03.html,fast/box-shadow/border-radius-big.html,fast/box-shadow/inset-with-extraordinary-radii-and-border.html,fast/box-shadow/inset.html,fast/box-shadow/spread-multiple-inset.html,fast/box-shadow/spread-multiple-normal.html,fast/box-shadow/spread.html,fast/css/text-input-with-webkit-border-radius.html,fast/forms/basic-selects.html,fast/layers/video-layer.html,fast/overflow/border-radius-clipping.html,fast/repaint/border-radius-repaint.html,fast/replaced/border-radius-clip.html,fast/transforms/shadows.html,media/audio-controls-rendering.html,media/controls-after-reload.html,media/controls-strict.html,media/controls-styling.html,media/controls-without-preload.html,media/media-document-audio-repaint.html,media/video-controls-rendering.html,media/video-display-toggle.html,media/video-empty-source.html,media/video-no-audio.html,media/video-volume-slider.html,media/video-zoom-controls.html,svg/custom/svg-fonts-in-html.html It essentially ends up rendering the background color as black instead of the correct color. This bug doesn't occur on Mac, just Windows and Linux, so seems likely a Skia bug. If I use fillRect instead fillRoundedRect, the color is right (even if the dimensions are wrong). So, it seems like a fillRoundedRect problem. I'm going to #ifdef it out temporarily until this can get addressed.
Attachments
Patch (1.27 KB, patch)
2011-04-05 17:16 PDT, Adrienne Walker
tony: review+
Nico Weber
Comment 1 2011-04-05 17:04:36 PDT
GraphicsContext::fillRoundedRect() in GraphicsContextSkia.cpp ignores its |color| parameter, maybe that's why?
Nico Weber
Comment 2 2011-04-05 17:07:43 PDT
Does this help? diff --git a/Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp b/Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp index df680eb..6d57fb8 100644 --- a/Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp +++ b/Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp @@ -853,6 +853,7 @@ void GraphicsContext::fillRoundedRect(const IntRect& rect, SkPaint paint; platformContext()->setupPaintForFilling(&paint); + paint.setColor(color.rgb()); platformContext()->canvas()->drawPath(path, paint); }
Adrienne Walker
Comment 3 2011-04-05 17:16:16 PDT
Adrienne Walker
Comment 4 2011-04-05 17:28:41 PDT
Kent Tamura
Comment 5 2011-04-05 22:12:29 PDT
Note You need to log in before you can comment on or make changes to this bug.