Hi,

I'm the developer of Sparrow Wallet, a JavaFX desktop app. I'd like to draw
attention to two bugs I've submitted through bugreport.java.com, since
neither has appeared in JBS yet, and the first will be encountered fairly
often in the wild.

1. [macOS, Metal] Window renders blank when larger than 4096 pixels
Submitted today, reference b3da673d-82e0-42a1-953a-f6b3c4209ae9

With the Metal pipeline, the default on macOS from JavaFX 27, a window
larger than 4096 pixels in either dimension draws nothing and stays white.
MTLResourceFactory.createPresentable() calls checkTextureSize() with the
window's render size, and that limit is clamped to
PrismSettings.maxTextureSize, which defaults to 4096. The Metal device
reports 16384. On a Retina display this affects any window wider than about
2048 points, so maximized windows on 5K and 6K displays are blank. ES2
creates its swap chain without this check, so the same window renders with
-Dprism.order=es2.

My users started reporting this within hours of my first release on JavaFX
27.0.1. The submission includes a short standalone reproducer: run any
window with -Dprism.maxTextureSize=1024 on a Retina Mac. The affected code
is unchanged on master. As a workaround I'm shipping
-Dprism.maxTextureSize=8192, which solves the issue.

2. Accessibility callbacks leak JNI local references
Submitted 2026-09-15, reference 13f748e3-6142-4fd0-bde0-8d1d994251a2

The native accessibility callbacks (mac/GlassAccessible.m,
win/GlassAccessible.cpp) don't delete the JNI local references they create.
Every accessibility read therefore retains MacVariant/WinVariant objects
until the app exits. I reproduced it outside my app with JavaFX 26: each
read of a 100-control window's accessibility tree retained 306 MacVariant
and 106 long[] objects. On macOS 26, Spotlight alone activates JavaFX
accessibility (JDK-8391459), so this affects users who don't use a screen
reader.

Could someone look these submissions up? I'm happy to provide more detail
or test fixes.

Thanks,
Craig Raw

Reply via email to