Hello Guru, Alexander Z, Murali,

Please review the following fix.

JIRA: https://bugs.openjdk.java.net/browse/JDK-8160769

Webrev: http://cr.openjdk.java.net/~arajkumar/8160769/webrev.00

Issue: Unable to tile SVG image using css background property

Analysis: For tiled SVG image drawing, WebCore creates a temporary Graphics buffer(ImageBufferJava)[1] and renders SVG contents into it. Once the SVG is rendered in the temporary graphics buffer, WebCore will call Image::drawPattern to tile it on the WebPage's back buffer. As soon as drawing is completed, temporary graphics buffer will be destroyed.

FX WebView's GraphicsContext APIs are asynchronous in nature(rendered in FX render thread using RenderQueue), so temporary graphics buffer would have been destroyed even before rendering the SVG content into it. At later point of time, when Image::drawPattern is executed in render thread, it will be accessing a GraphicsContext of an destroyed object.

Solution: Before destroying an Native ImageBuffer, flush all its render queue commands synchronously, So that it's content will be rendered as expected.

[1] http://trac.webkit.org/browser/trunk/Source/WebCore/svg/graphics/SVGImage.cpp?rev=187486#L202

Regards,
Arun

Reply via email to