Windows 8.1 and higher has a feature to make text and other items on the desktop smaller or larger.
GetDpiForMonitor reads the updated DPI when items size is changed.
GetDeviceCaps(hDC, LOGPIXELSX) returns "Number of pixels per logical inch along the screen width. In a system with multiple display monitors, this value is the same for all monitors" according to the documentation. This value is not changed when items size is updated. It can depend on the dpiAware property which is set in the java.manifest file. It is 96 when dpiAware=false and 192 on my HiDPI display when dpiAware=true (the case which we use).

Thanks,
Alexandr.
On 8/31/2016 5:35 PM, Semyon Sadetsky wrote:
I saw that some Windows 10 apps may change scale without relogin. But probably they were created for UWP.

So, the fix looks good to me.

--Semyon


On 8/31/2016 4:08 PM, Philip Race wrote:
IIRC that would require a system reboot on Window 7 and
at least for you to log out and log back in on later OSes, so that is not an issue is it ?

+1

-phil.

On 8/31/16, 5:29 AM, Semyon Sadetsky wrote:
Hi Alexander,

If the system scale is changed, will the skin size be updated according to the new dpi value?

--Semyon


On 31.08.2016 15:08, Alexandr Scherbatiy wrote:

Hello,

Could you review the fix:
  bug: https://bugs.openjdk.java.net/browse/JDK-8158411
  webrev: http://cr.openjdk.java.net/~alexsch/8158411/webrev.00

This is a regression from the fix JDK-8076545 Text size is twice bigger under Windows L&F on Win 8.1 with HiDPI display.

The system dpi is read every time when it is required. The fix reads the system dpi only once. Before the current fix SwingMark Sub-Menus test called 50 times has score 37021. After the fix the score is 33890. Which gives improvement (37021 - 33890) * 100 / 37021 = 8.45%.

 Thanks,
 Alexandr.




Reply via email to