On Thu, 5 Nov 2020 02:44:01 GMT, John Neffenger <github.com+1413266+jgn...@openjdk.org> wrote:
>> Johan Vos has updated the pull request incrementally with one additional >> commit since the last revision: >> >> add one more @override to process reviewer comments > > modules/javafx.graphics/src/main/java/com/sun/glass/ui/monocle/EGLPlatform.java > line 42: > >> 40: } >> 41: } >> 42: } > > I changed the constructor to the following: > > import com.sun.glass.utils.NativeLibLoader; > > public EGLPlatform() { > String lib = System.getProperty("monocle.egl.lib"); > if (lib != null) { > NativeLibLoader.loadLibrary(lib); > } > } > > Using the `NativeLibLoader` allowed me to define my native library with > `monocle.egl.lib=test01` (instead of `libtest01.so`) and drop it in the > JavaFX SDK with all the other JavaFX libraries. You also get good error > messages when it fails. > > The current code did load the library after adding its path to the > environment variable `LD_LIBRARY_PATH`, but it failed with the following > message on first use: > > java.lang.UnsatisfiedLinkError: > 'long com.sun.glass.ui.monocle.EGLAcceleratedScreen > .nPlatformGetNativeWindow(java.lang.String)' > > The call to `NativeLibLoader` solved these problems, with no > `LD_LIBRARY_PATH` required. The difference between how I'm building it and how you are building is that I combine all monocle code in 1 library (libglass_monocle.so) where you have a common monocle library and a egl-specific one -- and this is what you do with the EPD as well. For Android, we use a single library as well. At build time, the android-specific classes are added in libglass_monocle.so and dlopen() is used to load android-specific libraries at runtime. Both approaches are valid, but can't be mixed. Hence we need to decide to either go for 1 or 2 monocle libraries (the android approach, where there is libglass_monocle only or the epd approach where there is also libglass_monocle_epd). I don't have a strong preference, but I think libglass_monocle will be really very small. Bundling the device-specific library (in your case the one containing test01.o) with the monocle library (the general or a specific one) seems less interesting, as that means you need e.g. 4 different monocle libraries for 4 different Pi-configurations. I believe it is better to share the monocle libraries, and have a single OpenJFX library for monocle, and then platform/configuration-specific libraries. ------------- PR: https://git.openjdk.java.net/jfx/pull/343