RFR: 8340005: Eliminate native access calls from javafx.swing
Andy Goryachev
angorya at openjdk.org
Tue Oct 15 17:06:20 UTC 2024
On Tue, 15 Oct 2024 16:54:14 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:
>> While implementing [JDK-8339517](https://bugs.openjdk.org/browse/JDK-8339517) to eliminate native access warnings by passing "--enable-native-access" for the three JavaFX modules with native code (javafx.graphics, javafx.media, and javafx.web), it was found that the Swing interop code in javafx.swing calls a JNI method defined in one of the native graphics libraries (prism-common) directly
>>
>> This means that even after [JDK-8339517](https://bugs.openjdk.org/browse/JDK-8339517) is fixed, we still get native access warnings when running any test that uses SwingNode.
>>
>> This fixes the native access warning by making javafx.graphics module call the native JNI and Swing-interop calls the static utility method in javafx.graphics, in this case defined in PlatformImpl
>>
>> All test.javafx.embed.swing SwingNode tests are running ok without any native warning
>
> modules/javafx.graphics/src/main/native-prism/SwingInterop.c line 31:
>
>> 29: * Class com_sun_javafx_application_PlatformImpl
>> 30: * Method: overrideNativeWindowHandle
>> 31: * Signature (Ljava/lang/Class;JLjava/lang/Runnable)Ljdk.swing.interop.LightweightFrameWrapper;
>
> The signature should be changed to match the actual method. You can copy / paste from the generated header file.
>
> Also, I recommend including the generated header file in this file (after the include of `jni.h`)
was the header file omitted? It did compile, could I have missed a warning?
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1600#discussion_r1801597021
More information about the openjfx-dev
mailing list