[PATCH wayland] scanner: don't emit the extern declarations for external types

Arnaud Vrac rawoul at gmail.com
Mon Jun 1 00:55:09 PDT 2015


On Thu, May 28, 2015 at 6:30 PM, Giulio Camuffo <giuliocamuffo at gmail.com>
wrote:

> We were emitting the extern declarations of all types used in the protocol,
> even if not defined in it. This caused warnings to be produced when using
> the -Wredundant-decls compiler flag when building an extension that uses
> e.g. wl_surface. However we only need the extern declarations if the
> protocol defines a factory for those external interfaces. That is a
> bad design and can be however done by including the dependent protocol
> header first.
> So only emit the extern declarations for the types that the protocol
> actually defines, this restoring the behavior we were using in 1.7.
>
> Fixes https://bugs.freedesktop.org/show_bug.cgi?id=90677
> ---
>  src/scanner.c | 10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/src/scanner.c b/src/scanner.c
> index 11efffc..4ab7d85 100644
> --- a/src/scanner.c
> +++ b/src/scanner.c
> @@ -1089,18 +1089,14 @@ emit_header(struct protocol *protocol, enum side
> side)
>                 printf("struct %s;\n", *p);
>                 prev = *p;
>         }
> +       wl_array_release(&types);
>         printf("\n");
>
> -       prev = NULL;
> -       wl_array_for_each(p, &types) {
> -               if (prev && strcmp(*p, prev) == 0)
> -                       continue;
> +       wl_list_for_each(i, &protocol->interface_list, link) {
>                 printf("extern const struct wl_interface "
> -                      "%s_interface;\n", *p);
> -               prev = *p;
> +                      "%s_interface;\n", i->name);
>         }
>
> -       wl_array_release(&types);
>         printf("\n");
>
>         wl_list_for_each(i, &protocol->interface_list, link) {


Tested-by: Arnaud Vrac <rawoul at gmail.com>

-- 
Arnaud Vrac
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20150601/18d40f66/attachment-0001.html>


More information about the wayland-devel mailing list