summaryrefslogtreecommitdiff
path: root/src/scanner.c
diff options
context:
space:
mode:
authorGiulio Camuffo <giuliocamuffo@gmail.com>2015-05-28 19:30:33 +0300
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2015-06-01 11:47:39 +0300
commitf0be757bfaf8cd43e89471ec7fa8f57093d38f81 (patch)
tree41c84eab0a610b82adfa8a6701ba9ef458ea8101 /src/scanner.c
parentc19d5e1867ef179f118f164a3457cb5366cf4055 (diff)
downloadwayland-f0be757bfaf8cd43e89471ec7fa8f57093d38f81.tar.gz
scanner: don't emit the extern declarations for external types
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 Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Tested-by: Arnaud Vrac <rawoul@gmail.com>
Diffstat (limited to 'src/scanner.c')
-rw-r--r--src/scanner.c10
1 files 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) {