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