Using libweston with GTK/GDK

adlo adloconwy at gmail.com
Thu May 9 09:43:54 UTC 2019


> On 1 May 2019, at 10:34, Pekka Paalanen <ppaalanen at gmail.com> wrote:
> 
> it is all just the normal Wayland protocol exchange but with a new
> interface of your own design. I'm not sure if there is a really
> minimal example, but I'll list at least some.
> 
> One example of such private protocol extension is
> https://gitlab.freedesktop.org/wayland/weston/blob/master/protocol/weston-desktop-shell.xml
> 
> The server-side implementation of it is in shell.c and the
> entrypoint to that is
> https://gitlab.freedesktop.org/wayland/weston/blob/master/desktop-shell/shell.c#L5143
> 
>    wl_global_create(ec->wl_display,
>                 &weston_desktop_shell_interface, 1,
>                 shell, bind_desktop_shell)
> 
> which installs the protocol extension in the compositor. You can
> see everything about the implementation by following all callbacks
> that get registered, starting with bind_desktop_shell().
> 
> The privacy of the protocol extension, the installed wayland global
> really, is achieved in
> https://gitlab.freedesktop.org/wayland/weston/blob/master/desktop-shell/shell.c#L4366
> 
>    shell->child.client = weston_client_start(shell->compositor,
>                          shell->client);
> 
> which creates the Wayland connection before forking the child
> process and bind_desktop_shell() then verifying the client trying
> to bind to the global is the client that was forked.
> 
> 
> The client-side implementation is in desktop-shell.c with the entry
> point at
> https://gitlab.freedesktop.org/wayland/weston/blob/master/clients/desktop-shell.c#L1392
> 
>    if (!strcmp(interface, "weston_desktop_shell")) {
>        desktop->shell = display_bind(desktop->display,
>                          id,
>                          &weston_desktop_shell_interface,
>                          1);
>        weston_desktop_shell_add_listener(desktop->shell,
>                          &listener,
>                          desktop);

I added a call to wl_global_create(). I also created a test client that calls wl_registry_bind(), but my bind function doesn't seem to run, and wl_registry_bind returns NULL. How can I resolve this?

(Is it OK to just pass the number 1 as the name parameter for wl_registry_bind?)

Regards

adlo


More information about the wayland-devel mailing list