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

Pekka Paalanen ppaalanen at gmail.com
Mon Jun 1 01:53:23 PDT 2015


On Mon, 1 Jun 2015 09:55:09 +0200
Arnaud Vrac <rawoul at gmail.com> wrote:

> 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>
> 

Pushed:
   c19d5e1..f0be757  master -> master


Thanks,
pq


More information about the wayland-devel mailing list