Hi, I rewrote the scanner, so it's all my own code now. No legal issues since I signed the OCA.
Generated java code looks like this: https://github.com/tsayao/glass-wayland/blob/main/src/com/sun/glass/wayland/extracted/XdgToplevel.java -- Thiago. Em seg., 29 de abr. de 2024 às 19:57, Kevin Rushforth < kevin.rushfo...@oracle.com> escreveu: > Thank you. > > -- Kevin > > > On 4/29/2024 2:35 PM, Thiago Milczarek Sayão wrote: > > I thought about possible legal conflicts. > > The code is on my github - I'm exploring and testing before starting the > real work. > > wayland-scanner generates code from the protocol specs, which are xml > files. > https://wayland.app/protocols/ > <https://urldefense.com/v3/__https://wayland.app/protocols/__;!!ACWV5N9M2RV99hQ!Jo_TDwcs-PU92bLqkpeok4ZlEQPsXiuBR6VfTF1dPSZ9mw24pohF8OxE3mlESTQMdQw0OeOFkX-vr7oN_qyvIrSwcvY$> > > I will write a new generator/scanner from scratch - it's not too much > work. > The generator/scanner itself does not necessarily need to be part of the > PR, but it might be a good idea to include it, since the protocol changes > over time. > > -- Thiago. > > > > Em seg., 29 de abr. de 2024 às 18:10, Kevin Rushforth < > kevin.rushfo...@oracle.com> escreveu: > >> As a reminder, contributors must not include 3rd-party code in any >> openjdk repo. Per the terms of the OCA, all code that you contribute to >> OpenJDK must be your own code. This includes code you push to >> openjdk/jfx-sandbox and code in a branch of a personal fork of openjdk/jfx >> from which you create a PR. >> >> -- Kevin >> >> >> On 4/28/2024 2:45 PM, Thiago Milczarek Sayão wrote: >> >> Hi, >> >> I managed to display a very basic wayland toplevel surface from java: >> https://github.com/tsayao/glass-wayland >> <https://urldefense.com/v3/__https://github.com/tsayao/glass-wayland__;!!ACWV5N9M2RV99hQ!Jo_TDwcs-PU92bLqkpeok4ZlEQPsXiuBR6VfTF1dPSZ9mw24pohF8OxE3mlESTQMdQw0OeOFkX-vr7oN_qyvrMZe-eM$> >> >> If you are using intellij, just run the "Test App" (with java 22). >> >> generate.sh will jextract the code from wayland-client. >> >> I rushed to get the window displayed - so it doesn't look good yet (but I >> do accept suggestions). >> >> It uses a java wayland-scanner (included) to read protocol xml files and >> generate code that uses jextracted calls. >> >> The sample also binds EGL and GL apis, but just because wayland requires >> a buffer to display the surface. Maybe it was easier to use a shared memory >> :) >> >> Credits to (I adapted it to ouput jextract compatible code): >> https://github.com/gfxstrand/wayland-java/tree/master/scanner >> <https://urldefense.com/v3/__https://github.com/gfxstrand/wayland-java/tree/master/scanner__;!!ACWV5N9M2RV99hQ!Jo_TDwcs-PU92bLqkpeok4ZlEQPsXiuBR6VfTF1dPSZ9mw24pohF8OxE3mlESTQMdQw0OeOFkX-vr7oN_qyv70bWagY$> >> >> Cheers >> >> Em ter., 23 de abr. de 2024 às 09:11, Thiago Milczarek Sayão < >> thiago.sa...@gmail.com> escreveu: >> >>> I'm doing some work here: >>> https://github.com/tsayao/glass-wayland >>> <https://urldefense.com/v3/__https://github.com/tsayao/glass-wayland__;!!ACWV5N9M2RV99hQ!Jo_TDwcs-PU92bLqkpeok4ZlEQPsXiuBR6VfTF1dPSZ9mw24pohF8OxE3mlESTQMdQw0OeOFkX-vr7oN_qyvrMZe-eM$> >>> >>> So far it's been a good experience to use FFM / jextract. >>> >>> The idea is to plug it as a glass wayland backend when it's good enough. >>> >>> >>> >>> Em seg., 22 de abr. de 2024 às 16:16, Nir Lisker <nlis...@gmail.com> >>> escreveu: >>> >>>> Not sure it helps with warmup, but marking a foreign function as >>>> critical can improve performance: >>>> https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/lang/foreign/Linker.Option.html#critical(boolean) >>>> . >>>> >>>> On Mon, Apr 22, 2024 at 10:02 PM Philip Race <philip.r...@oracle.com> >>>> wrote: >>>> >>>>> No, it wasn't. I didn't even use jextracted code. >>>>> The startup cost is around initialisation of FFM - around 70 ms (IIRC) >>>>> overhead on my MacBook >>>>> Then creation of VarHandles and MethodHandles - 2-5 ms each is what I >>>>> measured, so do these lazily if you can. >>>>> And warmup cost is that it takes about 10000 iterations to get code >>>>> fully compiled. >>>>> >>>>> java -XX:+PrintFlagsFinal -version 2>&1 | grep CompileThreshold >>>>> intx CompileThreshold = >>>>> 10000 {pd product} {default} >>>>> double CompileThresholdScaling = >>>>> 1.000000 {product} {default} >>>>> uintx IncreaseFirstTierCompileThresholdAt = >>>>> 50 {product} {default} >>>>> intx Tier2CompileThreshold = >>>>> 0 {product} {default} >>>>> intx Tier3CompileThreshold = >>>>> 2000 {product} {default} >>>>> intx Tier4CompileThreshold = >>>>> 15000 {product} {default} >>>>> >>>>> -phil. >>>>> >>>>> >>>>> On 4/22/24 11:45 AM, Thiago Milczarek Sayão wrote: >>>>> >>>>> I think the startup time might be related to all static symbol >>>>> lookups. >>>>> So I'm manually including just what is needed: >>>>> >>>>> jextract --output src -t com.sun.glass.wayland.extracted \ >>>>> --header-class-name GlassWayland \ >>>>> `pkg-config --libs glib-2.0 gio-2.0 libportal wayland-client` \ >>>>> `pkg-config --cflags-only-I glib-2.0 gio-2.0 libportal wayland-client` \ >>>>> glass-wayland.h \ >>>>> --include-function xdp_portal_initable_new \ >>>>> --include-function xdp_session_close \ >>>>> --include-function xdp_portal_open_file \ >>>>> --include-function xdp_portal_open_file_finish \ >>>>> --include-function g_object_unref \ >>>>> --include-function g_timeout_add \ >>>>> --include-function g_add_idle \ >>>>> --include-function g_main_loop_run \ >>>>> --include-function g_main_loop_new \ >>>>> --include-function g_main_loop_ref \ >>>>> --include-function g_main_loop_unref \ >>>>> --include-function g_main_loop_quit \ >>>>> --include-function g_settings_new \ >>>>> --include-function g_settings_get_int \ >>>>> --include-function wl_display_connect \ >>>>> --include-function wl_display_disconnect \ >>>>> --include-function wl_display_roundtrip \ >>>>> --include-function wl_display_dispatch_pending \ >>>>> --include-typedef GAsyncReadyCallback \ >>>>> --include-typedef GSourceFunc \ >>>>> --include-typedef GError >>>>> >>>>> >>>>> Em seg., 22 de abr. de 2024 às 13:24, Philip Race < >>>>> philip.r...@oracle.com> escreveu: >>>>> >>>>>> As a reminder, using FFM will require all FX *applications* to >>>>>> specify --enable-native-access on the command line >>>>>> Although this is likely coming to JNI soon too. >>>>>> >>>>>> https://docs.oracle.com/en/java/javase/21/core/restricted-methods.html >>>>>> >>>>>> But one thing to watch out for with FFM is startup + warm up time. >>>>>> I struggled a lot with that in using FFM for just one library in the >>>>>> java.desktop module. >>>>>> >>>>>> -phil >>>>>> >>>>>> On 4/22/24 9:12 AM, Nir Lisker wrote: >>>>>> >>>>>> Sorry, we bumped to Java 21 in JavaFX 22 I think since we >>>>>> preserve the N-1 rule. >>>>>> >>>>>> On Mon, Apr 22, 2024 at 6:03 PM Nir Lisker <nlis...@gmail.com> wrote: >>>>>> >>>>>>> I think that we'll be able to bump to Java 25 in JavaFX 25, like we >>>>>>> did with 21. I suggested initially to bump to Java 22 exactly for FFM as >>>>>>> it's very useful for JavaFX, but was told we shouldn't since it's not an >>>>>>> LTS version. >>>>>>> >>>>>>> I have no idea how long the work on Wayland will take including the >>>>>>> code review (a rather long process), but you should be able to request >>>>>>> code >>>>>>> reviews with FFM and have it ready for integration by Java 25. >>>>>>> >>>>>>> On Mon, Apr 22, 2024 at 5:49 PM Thiago Milczarek Sayão < >>>>>>> thiago.sa...@gmail.com> wrote: >>>>>>> >>>>>>>> I was just experimenting, but it seems to be less work than going >>>>>>>> with JNI. >>>>>>>> If I am correct, the next Java LTS will be 25, which will be >>>>>>>> required on JavaFX 29 to be released on September/29. >>>>>>>> >>>>>>>> It's 7 years - that's really too much. >>>>>>>> >>>>>>>> Maybe it's still worthwhile to prototype using FFM and then port >>>>>>>> everything to JNI. >>>>>>>> >>>>>>>> -- Thiago. >>>>>>>> >>>>>>>> >>>>>>>> Em seg., 22 de abr. de 2024 às 11:21, Kevin Rushforth < >>>>>>>> kevin.rushfo...@oracle.com> escreveu: >>>>>>>> >>>>>>>>> Note also that we cannot use Panama in the JavaFX internals yet, >>>>>>>>> since >>>>>>>>> the minimum version of the JDK is 21. >>>>>>>>> >>>>>>>>> -- Kevin >>>>>>>>> >>>>>>>>> >>>>>>>>> On 4/21/2024 10:51 AM, Thiago Milczarek Sayão wrote: >>>>>>>>> > Hi, >>>>>>>>> > >>>>>>>>> > I did a small test app to explore Wayland client and portals >>>>>>>>> (for >>>>>>>>> > Robot and dialogs such as file open/save). >>>>>>>>> > >>>>>>>>> > https://github.com/tsayao/wayland-test/blob/main/wayland-test.c >>>>>>>>> <https://urldefense.com/v3/__https://github.com/tsayao/wayland-test/blob/main/wayland-test.c__;!!ACWV5N9M2RV99hQ!Jo_TDwcs-PU92bLqkpeok4ZlEQPsXiuBR6VfTF1dPSZ9mw24pohF8OxE3mlESTQMdQw0OeOFkX-vr7oN_qyv-uSsniA$> >>>>>>>>> > >>>>>>>>> > It seems it will work as a glass backend, but some walls will be >>>>>>>>> hit >>>>>>>>> > on the way :) >>>>>>>>> > >>>>>>>>> > I have tried to use jextract (from project Panama) to work >>>>>>>>> directly >>>>>>>>> > with java, but it seems it does not support wl_ types. >>>>>>>>> > >>>>>>>>> > -- Thiago. >>>>>>>>> >>>>>>>>> >>>>>> >>>>> >> >