On Sun, 24 Oct 2021 17:23:40 GMT, Andreas Heger <d...@openjdk.java.net> wrote:

>> The inconsistent illumination happens on Macs with retina displays only if 
>> the 3D shape is placed in a SubScene. The light sources are located with 
>> wrong coordinates in sub scenes and this causes a different illumination. 
>> The wrong coordinates for the light sources come from the fact that the 
>> retina pixel scale factors are not used in a SubScene.
>> 
>> With this pull request, the retina pixel scale factors will be also used in 
>> SubScenes and this should resolve the bug 
>> [https://bugs.openjdk.java.net/browse/JDK-8255015](url)
>
> Andreas Heger has updated the pull request with a new target base due to a 
> merge or a rebase. The incremental webrev excludes the unrelated changes 
> brought in by the merge/rebase. The pull request contains 10 additional 
> commits since the last revision:
> 
>  - Merge branch 'openjdk:master' into fix-8255015
>  - 8255015: Comments corrected
>  - 8255015: Comment about copying pixel scale factors corrected
>  - 8255015: Tabs removed from PointLightIllumination.java
>  - Merge branch 'openjdk:master' into fix-8255015
>  - 8255015: JUnit Test class added.
>  - Merge branch 'openjdk:master' into fix-8255015
>  - Merge branch 'openjdk:master' into fix-8255015
>  - Merge branch 'openjdk:master' into fix-8255015
>  - 8255015: Copy pixel scale factors from graphics object to subscene 
> graphics so that the position of lights will be scaled correctly on retina 
> displays

The fix and the test looks good. I left a couple minor comments on the test.

I ran the test on macOS with retina. I'll double-check on the other platforms, 
but I think this is about ready to go.

tests/system/src/test/java/test/robot/test3d/PointLightIlluminationTest.java 
line 67:

> 65:     private static final int    LOWER_CORNER_Y     = (int) 
> (SCENE_WIDTH_HEIGHT * (1 - CORNER_FACTOR));
> 66:     private static final double COLOR_TOLERANCE    = 0.07;
> 67:     private static Scene testScene;

This is created on one thread and tested on another (to see whether it's 
already been created), so I recommend making it `volatile` (i.e., `private 
static volatile ...`). Also, you might want to explicitly set it to `null` 
since you rely on it (yes, I know `null` is the default).

tests/system/src/test/java/test/robot/test3d/PointLightIlluminationTest.java 
line 180:

> 178:         return new Scene(new Group(subScene), SCENE_WIDTH_HEIGHT, 
> SCENE_WIDTH_HEIGHT);
> 179:     }
> 180: }

Minor: there should be a new line at the end of the file.

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

PR: https://git.openjdk.java.net/jfx/pull/531

Reply via email to