Basic API usage

Jan Bruns code at
Wed Sep 9 15:44:59 UTC 2020

Ok. I now have an even earlier point of missing knowledge than I expected:

Why does the generated version of wayland-client-protocol.h reference a 
server object called "wl_registry_interface"?

It makes use of it in

extern const struct wl_interface wl_registry_interface;

static inline struct wl_registry *
wl_display_get_registry(struct wl_display *wl_display)
     struct wl_proxy *registry;

     registry = wl_proxy_marshal_constructor((struct wl_proxy *) wl_display,
              WL_DISPLAY_GET_REGISTRY, &wl_registry_interface, NULL);

     return (struct wl_registry *) registry;

Doesn't wl_proxy_marshal_constructor normally allocate client-side 
"objects, proxies" for new-id args?

An attempt to do the very same thing (import the named memory block by 
means of linker, and passing an adress to that) from within simple 
typeless testing code made wl_proxy_marshal_constructor return NULL 
(instead of crashing). Maybe some detail I have done wrong, but I don't 
understand what's going on here anyway.


Jan Bruns

More information about the wayland-devel mailing list