RFR: 8187759: Background not refreshed when painting over a transparent JFrame [v2]
Tejesh R
tr at openjdk.org
Tue Feb 6 08:12:55 UTC 2024
On Fri, 2 Feb 2024 07:01:20 GMT, Tejesh R <tr at openjdk.org> wrote:
>> src/java.desktop/share/classes/javax/swing/BufferStrategyPaintManager.java line 251:
>>
>>> 249: g2d.setBackground(paintingComponent.getBackground());
>>> 250: g2d.clearRect(x, y, w, h);
>>> 251: g2d.setBackground(oldBg);
>>
>> Shouldn't we limit this change to non-opaque components only?
>> `if (!bufferComponent.isOpaque())`
>>
>> Also, it might be worthwhile to find a way not to clear the whole screen/window area (if possible), but only the dirty part.
>
> Yeah, will updated to non-opaque types. Will explore on clearing the dirty regions rather than whole screen.
I have updated to non-opaque regions and its working fine. Couldn't find a way to clear only the dirty regions.
>> test/jdk/javax/swing/JFrame/JFrameBackgroundRefreshTest.java line 45:
>>
>>> 43: * @build PassFailJFrame
>>> 44: * @summary Test to check if JFrame background is refreshed in Linux.
>>> 45: * @requires (os.family == "linux")
>>
>> Why should this test only run on Linux?
>
> Since the fix was done for linux alone, I have restricted the test to it. Anyhow it works on windows and mac.
Somehow the automated test is not working flawless in windows and mac. In windows the image is getting stuck at center of white frame when its made automatic and in mac CI machines are failing even though the white screen is clear. Since the fix is specifically for linux I think we can leave the test for linux alone.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/17081#discussion_r1479366129
PR Review Comment: https://git.openjdk.org/jdk/pull/17081#discussion_r1479364743
More information about the client-libs-dev
mailing list