[OpenJDK 2D-Dev] <Swing Dev> [10] Review Request 8187367: Numerous swing display problems with scaled displays on Windows

Phil Race philip.race at oracle.com
Tue Nov 7 22:08:34 UTC 2017


I think we should push this fix, although there are concerns we can't 
immediately demonstrate
that Math.ceil may be wrong in some theoretical case.

Also Sergey, please add a comment in the bug report about the 
alternative fix you mentioned
that was discussed previously so that can be re-visited if we 
subsequently find problems as a result of this fix.

-phil.

On 09/19/2017 07:58 AM, Semyon Sadetsky wrote:
> On 09/18/2017 12:01 PM, Sergey Bylokhov wrote:
>> Hi, Semyon.
>> Is it possible to write a test case for this issue? It will be 
>> helpful to understand the bug and a fix.
>
> Writing the test is hard because those inner interfaces are  too deep 
> inside. You can use SwingSet2 demo to see the described artifacts at 
> fractional scales before the fix.
>
>>
>> On 9/18/17 09:36, Semyon Sadetsky wrote:
>>> Hello,
>>>
>>> Please review fix for JDK10 (in Swing and Java2D):
>>>
>>> bug: https://bugs.openjdk.java.net/browse/JDK-8187367
>>>
>>> webrev: http://cr.openjdk.java.net/~ssadetsky/8187367/webrev.00/
>>>
>>> Swing apps  may have artifacts on HiDPI screens with fractional 
>>> scales. There are several issues which may cause various artifacts 
>>> but the current fix only eliminates one type of artifacts the 
>>> vertical and horizontal lines on painted surfaces (other issues are 
>>> addressed by [1] and [2]). This issue was introduced after 8073320 
>>> and then incorrectly fixed in 8163193.
>>>
>>> The root cause is the painter pattern is drawn on a wrongly sized 
>>> and scaled image in case the image is an off-screen volatile image. 
>>> The painter doesn't take into account the volatile image inner scale 
>>> transformation which is not an identity in case of HiDPI , so the 
>>> resulting image is drawn on of off-screen surface that in the scale 
>>> times bigger than it is actually necessary. Since such images are 
>>> cached this was waste of RAM. Also, the bounds sent to the painter 
>>> class don't take into account the transformation rounding error the 
>>> latter caused artifacts on the drawing edges.
>>>
>>> --Semyon
>>>
>>> [1] https://bugs.openjdk.java.net/browse/JDK-8187585
>>>
>>> [2] https://bugs.openjdk.java.net/browse/JDK-8187586
>>>
>>
>>
>



More information about the 2d-dev mailing list