RFR: 8346281: [Windows] RenderScale doesn't update to HiDPI changes

Jose Pereda jpereda at openjdk.org
Wed Nov 5 12:37:41 UTC 2025


This PR adds the missing native implementation for Windows, `GlassWindow::HandleDPIEvent`, to notify the (Java) window when there is a DPI change event, which can happen when the user changes the resolution of the screen (via Settings -> System -> Display -> scale), while the JavaFX application is running, in a similar way as Java Desktop [handles](https://github.com/openjdk/jdk/blob/master/src/java.desktop/windows/native/libawt/windows/awt_Window.cpp#L1418) this DPI event.

When such `WM_DPICHANGED` event happens, `GlassWindow::HandleDPIEvent` notifies the (Java) window, which changes its platform scale via `Window::notifyScaleChanged`, and `GlassScreen::HandleDisplayChange();` is needed too, to update the platform scale of the screen where the window is at as well.

The change in `Screen:: notifySettingsChanged` is needed in order to prevent disposing screens that are not referenced by windows, and only do it when the screen instance of a given window does change.

There are no tests added to this PR, since these would require manual intervention to change the resolution of the display. In any case, the test case added to the [issue](https://bugs.openjdk.org/browse/JDK-8346281) runs fine now when the app runs on a given screen and the user changes its resolution. It has also been tested that it doesn't have any side effect on macOS.

For the case when the app runs on a different display that the one that was changed, see https://bugs.openjdk.org/browse/JDK-8371302 and a possible fix with https://github.com/openjdk/jfx/pull/1963.

-------------

Commit messages:
 - Notify window and screen when dpi changes, dispose screens only when windows replace them

Changes: https://git.openjdk.org/jfx/pull/1964/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1964&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8346281
  Stats: 28 lines in 2 files changed: 21 ins; 2 del; 5 mod
  Patch: https://git.openjdk.org/jfx/pull/1964.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1964/head:pull/1964

PR: https://git.openjdk.org/jfx/pull/1964


More information about the openjfx-dev mailing list