[OpenJDK 2D-Dev] RFR: 7018932 : Drawing very large coordinates with a dashed Stroke can cause Java to hang [v4]

Sergey Bylokhov serb at openjdk.java.net
Mon Jan 11 06:13:58 UTC 2021


On Sun, 10 Jan 2021 21:00:17 GMT, Laurent Bourgès <lbourges at openjdk.org> wrote:

>> This is my fix proposal to this bug:
>> - added new method strokeTo(... Region clip ...) in the abstract RenderingEngine class
>> - fixed all RenderingEngine implementations in java.desktop module
>> - MarlinRenderingEngine now uses the clip region to roughly & quickly clip the given shape in strokeTo(clip) 
>> - LoopPipe.getStrokeSpans() uses the new strokeTo(clip) method to get good performance with huge dashed shapes.
>> 
>> I wrote a new test class to validate the bug fix.
>
> Laurent Bourgès has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fixed RenderingEngine.strokeTo(clip) to call by default former method.
>   Fixed CurveClipSplitter (float) to use double-precision for higher
>   accuracy.
>   Improved StrokedLineTest to use only bufferedimage rendering.

src/java.desktop/share/classes/sun/java2d/marlin/TransformingPathConsumer2D.java line 902:

> 900: 
> 901:         // clip rectangle (ymin, ymax, xmin, xmax) including padding:
> 902:         final double[] clipRectPad = new double[4];

It does not seem related to this fix? Or an updated test uncovered this?

test/jdk/sun/java2d/marlin/StrokedLinePerf.java line 37:

> 35:  * @bug 7018932
> 36:  * @summary fix LoopPipe.getStrokedSpans() performance (clipping enabled by Marlin renderer)
> 37:  * @run main DrawingTest7018932

typo DrawingTest7018932 -> StrokedLinePerf

-------------

PR: https://git.openjdk.java.net/jdk/pull/2013


More information about the 2d-dev mailing list