[PATCH 5/8] scanner: Send interface name and version for types new_id args
Pekka Paalanen
ppaalanen at gmail.com
Wed Oct 10 06:35:56 PDT 2012
On Tue, 9 Oct 2012 22:38:02 -0400
Kristian Høgsberg <krh at bitplanet.net> wrote:
> This makes the scanner generate the code and meta data to send the
> interface name and version when we pass a typeless new_id. This way, the
> generic factory mechanism provided by wl_display.bind can be provided by
> any interface.
> ---
> protocol/wayland.xml | 6 ++----
> src/scanner.c | 56 ++++++++++++++++++++++++++++++++++----------------
> 2 files changed, 40 insertions(+), 22 deletions(-)
>
> diff --git a/protocol/wayland.xml b/protocol/wayland.xml
> index e9f8034..86b82b8 100644
> --- a/protocol/wayland.xml
> +++ b/protocol/wayland.xml
> @@ -38,9 +38,7 @@
> the identifier.
> </description>
> <arg name="name" type="uint" summary="unique number id for object"/>
> - <arg name="interface" type="string"/>
> - <arg name="version" type="uint"/>
> - <arg name="id" type="new_id" interface="wl_object"/>
> + <arg name="id" type="new_id"/>
> </request>
>
> <request name="sync">
> @@ -58,7 +56,7 @@
> The error event is sent out when a fatal (non-recoverable)
> error has occurred.
> </description>
> - <arg name="object_id" type="object" interface="wl_object"/>
> + <arg name="object_id" type="object"/>
> <arg name="code" type="uint"/>
> <arg name="message" type="string"/>
> </event>
> diff --git a/src/scanner.c b/src/scanner.c
> index 0fc26e7..bf5df26 100644
> --- a/src/scanner.c
> +++ b/src/scanner.c
...
> @@ -645,8 +656,8 @@ emit_stubs(struct wl_list *message_list, struct interface *interface)
> interface->name);
>
> if (ret)
> - printf("\n\treturn (struct %s *) %s;\n",
> - ret->interface_name, ret->name);
> + printf("\n\treturn (void *) %s;\n",
> + ret->name);
This changes the cast on all wrapper functions. While it's not wrong in
any way, could we keep the cast to the same type as returned from the
function?
>
> printf("}\n\n");
> }
> @@ -799,6 +810,11 @@ emit_structs(struct wl_list *message_list, struct interface *interface)
>
> if (is_interface && a->type == OBJECT)
> printf("struct wl_resource *");
> + else if (is_interface && a->type == NEW_ID && a->interface_name == NULL)
> + printf("const char *interface, uint32_t version, uint32_t ");
We miss documentation comments for interface and version in the
generated header.
> + else if (!is_interface && a->type == OBJECT && a->interface_name == NULL)
> + printf("struct wl_object *");
> +
> else if (!is_interface && a->type == NEW_ID)
> printf("struct %s *", a->interface_name);
> else
...
Thanks,
pq
More information about the wayland-devel
mailing list