RFR: 8280482: Window transparency bug on Linux

Damon Nguyen dnguyen at openjdk.org
Tue Jul 11 22:01:14 UTC 2023


On Tue, 11 Jul 2023 10:50:13 GMT, Tejesh R <tr at openjdk.org> wrote:

> The bug mentions about transparency issue on Linux which actually got resolved with [JDK-8006421](https://bugs.openjdk.org/browse/JDK-8006421) fix. Now there is another problem related to the bug, which is screen selection going wrong during checking for new screen when the test is run. The problem is that (As seen in the pictures attached in bug) the transparency is lost for windows which are in screen 0 (default screen) too, which is not supposed to happen where windows on screen 1 should have lost there transparency. The main reason being the call to `toGlobal()` when window bounds are passed to `checkIfOnNewScreen` method. I didn't get the actual reason for `toGlobal` being used here (actually not required to check monitor number), but it actually doubled the X position of the window [here]( https://github.com/openjdk/jdk/blob/4b1403d06b99b91ddd89ad6e54669b0595f1f8e5/src/java.desktop/unix/classes/sun/awt/X11/XBaseWindow.java#L776). Removing `toGlobal` solve the issue and neithe
 r didn't cause any regression (existing test + the reason `toGlobal()` was added [JDK-8143295](https://bugs.openjdk.org/browse/JDK-8143295)).
> 
> The automated test fails if GC is changed for windows within screen 0 (default screen). CI testing is green.

Suggested some minor changes. I ran the changes and test in CI as well, and it passed with a higher repetition test. Test looks fine to me on Linux.

test/jdk/java/awt/Multiscreen/MultiScreenCheckScreenIDTest.java line 79:

> 77:                 .getScreenDevices();
> 78: 
> 79:         if(screens.length < 2) {

Suggestion:

        if (screens.length < 2) {

test/jdk/java/awt/Multiscreen/MultiScreenCheckScreenIDTest.java line 80:

> 78: 
> 79:         if(screens.length < 2) {
> 80:             System.out.println("Testing aborted. Required min of 2 screens. Found : " + screens.length );

There are a few lines like this that exceed the line character limit.

test/jdk/java/awt/Multiscreen/MultiScreenCheckScreenIDTest.java line 120:

> 118:                 double windowXPos = window.getBounds().getX();
> 119:                 double screen1Width = screens[0].getDefaultConfiguration().getBounds().getWidth();
> 120:                 System.out.println("window x Position : " + windowXPos + ", screen[0] width : " + screen1Width);

Line character limit

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

PR Review: https://git.openjdk.org/jdk/pull/14825#pullrequestreview-1525196838
PR Review Comment: https://git.openjdk.org/jdk/pull/14825#discussion_r1260312859
PR Review Comment: https://git.openjdk.org/jdk/pull/14825#discussion_r1260311802
PR Review Comment: https://git.openjdk.org/jdk/pull/14825#discussion_r1260313265



More information about the client-libs-dev mailing list