[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