I mailed the jextract list and Jorn Vernee explained that wayland use
opaque types, which are just defined as such:

struct wl_registry;

I guess you just pass it around and it's defined in the internal .c file.
Those are not supported by jextract.

I'll find a way to get around it.

But I've been playing with it all day, it seems very good. I was able to
generate bindings for:

GMain - for the main loop;
GSettings - for reading settings;
XDG Portal - for screen capture, screenshot, file dialogs

It looks like this:

1) To get a setting

try(var a = Arena.ofConfined()) {
    var mouseSettings =
g_settings_new(a.allocateUtf8String("org.gnome.desktop.interface"));
    int size = g_settings_get_int(mouseSettings,
a.allocateUtf8String("cursor-size"));
    g_object_unref(mouseSettings);
    return new Size(size, size);
}


2) Callbacks

@Override
protected void _invokeLater(Runnable runnable) {
    MemorySegment call = GSourceFunc.allocate(p -> {
        runnable.run();
        return 0;
    }, Arena.ofAuto());

    g_idle_add(call, MemorySegment.NULL);
}


It looks correct to me, but untested.

-- Thiago.

Em dom., 21 de abr. de 2024 às 18:15, Nir Lisker <nlis...@gmail.com>
escreveu:

> Can you link to where all the headers are? I found some in
> https://gitlab.freedesktop.org/wayland/wayland/-/tree/main/src, but I
> couldn't see where wl_registry is defined. From what I see, wl_XYZ types
> are structs, which are supported.
>
> By the way, there's a new guide for jextract at
> https://github.com/openjdk/jextract/blob/master/doc/GUIDE.md. When
> working with complex headers (includes upon includes), it's important to
> specify the correct target header.
>
> On Sun, Apr 21, 2024 at 11:35 PM Thiago Milczarek Sayão <
> thiago.sa...@gmail.com> wrote:
>
>> jextract --output src -t org.freedesktop.wayland.client
>> --header-class-name WlClient `pkg-config --cflags-only-I wayland-client`
>> `pkg-config --libs wayland-client`  /usr/include/wayland-client.h
>>
>> WARNING: Skipping wl_registry (type Declared(wl_registry) is not
>> supported)
>>
>> I would need this to hook the events with wl_registry_add_listener, but
>> currently the code generation for this is not working.
>>
>>
>>
>>
>>
>> Em dom., 21 de abr. de 2024 às 16:39, Nir Lisker <nlis...@gmail.com>
>> escreveu:
>>
>>> What are wl_ types? jextract only supports c headers.
>>>
>>> On Sun, Apr 21, 2024 at 10:31 PM Thiago Milczarek Sayão <
>>> thiago.sa...@gmail.com> 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
>>>>
>>>> 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.
>>>>
>>>

Reply via email to