[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