RFR: 8277240: java/awt/Graphics2D/ScaledTransform/ScaledTransform.java dialog does not get disposed
Alexey Ivanov
aivanov at openjdk.org
Thu Nov 7 12:59:53 UTC 2024
On Wed, 6 Nov 2024 23:59:24 GMT, Phil Race <prr at openjdk.org> wrote:
> This test has had reports of failures over the years notably on Linux.
> I think the large number of XVisuals may have something to do with it.
> I've updated it quite a bit and limited the number of dialogs it creates - we really don't need to test 300 of them
> This new version has passed hundreds of iterations.
Changes requested by aivanov (Reviewer).
test/jdk/java/awt/Graphics2D/ScaledTransform/ScaledTransform.java line 38:
> 36: /*
> 37: * @test
> 38: * @bug 8069362
Is it accidental or intentional?
[JDK-8069361](https://bugs.openjdk.org/browse/JDK-8069361): _SunGraphics2D.getDefaultTransform() does not include scale factor_ is the correct bug. The new bug id, JDK-8069362, seems unrelated.
test/jdk/java/awt/Graphics2D/ScaledTransform/ScaledTransform.java line 49:
> 47: private static volatile Dialog dialog;
> 48: private static volatile long startTime = 0;
> 49: private static volatile long endTime = 0;
Initialisers aren't needed: they set fields to their default values, and the values are reset before each test.
test/jdk/java/awt/Graphics2D/ScaledTransform/ScaledTransform.java line 57:
> 55: if (ge.isHeadlessInstance()) {
> 56: return;
> 57: }
Shall we remove `ge.isHeadlessInstance()`? The test is marked with `@key headful`, we can let it fail in headless environment.
test/jdk/java/awt/Graphics2D/ScaledTransform/ScaledTransform.java line 92:
> 90:
> 91: private static void showDialog(final GraphicsConfiguration gc) {
> 92:
Can you remove this blank line at the start of the method, please?
test/jdk/java/awt/Graphics2D/ScaledTransform/ScaledTransform.java line 93:
> 91: private static void showDialog(final GraphicsConfiguration gc) {
> 92:
> 93: System.out.println("Creating dialog for gc="+gc+" with tx="+gc.getDefaultTransform());
Suggestion:
System.out.println("Creating dialog for gc=" + gc + " with tx=" + gc.getDefaultTransform());
test/jdk/java/awt/Graphics2D/ScaledTransform/ScaledTransform.java line 95:
> 93: System.out.println("Creating dialog for gc="+gc+" with tx="+gc.getDefaultTransform());
> 94:
> 95: dialog = new Dialog((Frame) null, "Test", true, gc);
Suggestion:
dialog = new Dialog((Frame) null, "ScaledTransform", true, gc);
Set a unique title.
test/jdk/java/awt/Graphics2D/ScaledTransform/ScaledTransform.java line 97:
> 95: dialog = new Dialog((Frame) null, "Test", true, gc);
> 96:
> 97: dialog.setSize(100, 100);
Suggestion:
dialog.setSize(300, 100);
Larger width ensures the longer title is fully seen and not truncated.
test/jdk/java/awt/Graphics2D/ScaledTransform/ScaledTransform.java line 108:
> 106: System.out.println("GTX = " + gTx);
> 107: passed = (gcTx.getScaleX() == gTx.getScaleX()) &&
> 108: (gcTx.getScaleY() == gTx.getScaleY());
Suggestion:
passed = (gcTx.getScaleX() == gTx.getScaleX())
&& (gcTx.getScaleY() == gTx.getScaleY());
[Java Code Conventions](https://www.oracle.com/technetwork/java/codeconventions-150003.pdf)¹ recommend wrapping before the binary operator; if a line starts with an operator, it is clearly a continuation line rather than a new statement.
¹ Section 4.2 Wrapping Lines, bullet 2: _“Break before an operator.”_
test/jdk/java/awt/Graphics2D/ScaledTransform/ScaledTransform.java line 113:
> 111: }
> 112: painted.countDown();
> 113: endTime = System.currentTimeMillis();
Suggestion:
endTime = System.currentTimeMillis();
painted.countDown();
Both are volatile, yet it may still be possible that the main thread read a stale value of `endTime` before it's updated on EDT.
test/jdk/java/awt/Graphics2D/ScaledTransform/ScaledTransform.java line 126:
> 124: dialog.setVisible(false);
> 125: dialog.dispose();
> 126: }
Suggestion:
if (dialog != null) {
System.out.println("Disposing dialog");
dialog.setVisible(false);
dialog.dispose();
}
Amend indentation to 4 spaces as everywhere.
-------------
PR Review: https://git.openjdk.org/jdk/pull/21942#pullrequestreview-2420639676
PR Review Comment: https://git.openjdk.org/jdk/pull/21942#discussion_r1832483434
PR Review Comment: https://git.openjdk.org/jdk/pull/21942#discussion_r1832630857
PR Review Comment: https://git.openjdk.org/jdk/pull/21942#discussion_r1832602281
PR Review Comment: https://git.openjdk.org/jdk/pull/21942#discussion_r1832605490
PR Review Comment: https://git.openjdk.org/jdk/pull/21942#discussion_r1832495798
PR Review Comment: https://git.openjdk.org/jdk/pull/21942#discussion_r1832488803
PR Review Comment: https://git.openjdk.org/jdk/pull/21942#discussion_r1832490104
PR Review Comment: https://git.openjdk.org/jdk/pull/21942#discussion_r1832616170
PR Review Comment: https://git.openjdk.org/jdk/pull/21942#discussion_r1832610325
PR Review Comment: https://git.openjdk.org/jdk/pull/21942#discussion_r1832613055
More information about the client-libs-dev
mailing list