[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-swing-dev
Subject:    Re: <Swing Dev> [10] Review Request JDK - 8164811 : [hidpi]Tests fail with OpenGL Rendering
From:       Pankaj Bansal <pankaj.b.bansal () oracle ! com>
Date:       2017-11-03 13:44:53
Message-ID: 03356005-76d0-4e8f-8afc-bfa8bd6d891d () default
[Download RAW message or body]

Hi Sergey,

I have created the BufferedImage of correct size considering the window dimension and \
graphics context scale. 

I changed BufferedImage just to store graphicsConfig, so that it can be used by \
BufImgSurfaceManager while creating BufImgSurfaceData. The scale in BufImgSurfaceData \
is used to create config while creating the SunGraphics2D through getDefaultTransform \
function. Now when the TranslucentWindowPainter create scaled BufferedImage and then \
creates Graphics2D using that, the Graphics2D has transform scale as (1,1) as the \
BufImgSurfaceData has scale (1,1). Then this Graphics2D is used to update the Window \
in  updateWindow in TranslucentWindowPainter. As the transform is identity, none of \
the Swing Components which are added to the window are scaled. So I modified the \
BufferedImage to store graphicsConfig which can then be used by BugImgSurfaceManager \
to create BugImgSurfaceData with correct scale values and hence correct transform \
value in SunGraphics2D.

If this is not the correct way, I have one more way of doing this by transforming the \
SunGraphics2D object with transform of peer. So the SunGraphics2D will have correct \
transform  and objects are properly scaled. I have updated the webrev for the same. \
Please have a look. Also if this is also not the correct way, can you please suggest \
a way I can do this?

Webrev:
http://cr.openjdk.java.net/~pbansal/8164811/webrev.01/


Regards,
Pankaj Bansal



-----Original Message-----
From: Sergey Bylokhov 
Sent: Friday, November 3, 2017 5:34 AM
To: Pankaj Bansal; Prem Kumar Balakrishnan (prem.balakrishnan@oracle.com); \
                swing-dev@openjdk.java.net; 2d-dev@openjdk.java.net
Subject: Re: [10] Review Request JDK - 8164811 : [hidpi]Tests fail with OpenGL \
Rendering

Hi, Pankaj.
The BufferedImage class is a raster in the memory which should be unrelated to any \
grpahics config on the system. So this class should not be changed, but instead you \
should create a correct BI-as a back buffer which takes into account the size of the \
window and the scale of the GC.

On 31/10/2017 04:59, Pankaj Bansal wrote:
> Hi All,
> 
> Please review the fix for JDK 10.
> 
> Bug:
> 
> https://bugs.openjdk.java.net/browse/JDK-8164811
> 
> Webrev:
> 
> http://cr.openjdk.java.net/~pbansal/8164811/webrev.00/
> 
> Issue:
> 
> The tests given in the bug were failing when run with OpenGL and GDI.  
> This bug is related to 
> https://bugs.openjdk.java.net/browse/JDK-8189257
> which states that that HIDPI does not work with swing components when 
> Translucent window is used. Because of which all the tests in the bug 
> were failing.
> 
> Fix:
> 
> The TranslucentWindowPainter class was creating BufferedImage for 
> OpenGL (when /forceOpt/ is false) and GDI pipeline, but it is not 
> considering the device HiDPI scale. There is no way to create a scaled 
> BufferedImage because of which the scale value in BufImgSurfaceData is 
> always 1. Made changes to store graphics config in Buffered image, so 
> that the BufImgSurfaceManager can create BufImgSurfaceData with scale set properly.
> 
> This fix also fixes https://bugs.openjdk.java.net/browse/JDK-8189257
> 
> Regards,
> 
> Pankaj Bansal
> 


--
Best regards, Sergey.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic