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

Phil Race prr at openjdk.java.net
Tue Jan 12 18:47:57 UTC 2021


On Mon, 11 Jan 2021 09:00:27 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 two additional commits since the last revision:
> 
>  - fixed copyright year
>  - removed invalid jtreg test

src/java.desktop/share/classes/sun/java2d/pipe/SpanShapeRenderer.java line 45:

> 43:  */
> 44: public abstract class SpanShapeRenderer implements ShapeDrawPipe {
> 45: 

I suppose this is just clean up when you happened to notice it wasn't used/

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/othervm/timeout=10 -Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine StrokedLinePerf

I hope 10 seconds is enough for a stable test .. not connecting to the windowing system so maybe.

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];

are all the changes to double needed for this ? Or just preparation for removing the float pipeline ?

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

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


More information about the 2d-dev mailing list