[PATCH wayland 2/2] scanner: Generate all SINCE_VERSION macros for everyone

Quentin Glidic sardemff7+wayland at sardemff7.net
Tue Jul 5 18:41:50 UTC 2016

From: Quentin Glidic <sardemff7+git at sardemff7.net>

Practical example: a client supporting version 2 of wl_output will wait
for the wl_output.done event before starting wl_output-related
operations. However, if the server only supports version 1, no event
will ever come, and it must fallback to use the wl_output.geometry event
Without this macro, it cannot check for that in a nice way.

Signed-off-by: Quentin Glidic <sardemff7+git at sardemff7.net>

I do not have a real world use-case for the request macro on the server-side,
but I guess you could do the same: wait the for a "commit" request if client is
new enough, otherwise use some older request as commit.

Actually I think there was something like that somewhere, now that I write that,
but I do not remember where exactly.

 src/scanner.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/scanner.c b/src/scanner.c
index 4708cae..a4c1984 100644
--- a/src/scanner.c
+++ b/src/scanner.c
@@ -1544,10 +1544,12 @@ emit_header(struct protocol *protocol, enum side side)
 			emit_structs(&i->request_list, i, side);
 			emit_opcodes(&i->event_list, i);
 			emit_opcode_versions(&i->event_list, i);
+			emit_opcode_versions(&i->request_list, i);
 			emit_event_wrappers(&i->event_list, i);
 		} else {
 			emit_structs(&i->event_list, i, side);
 			emit_opcodes(&i->request_list, i);
+			emit_opcode_versions(&i->event_list, i);
 			emit_opcode_versions(&i->request_list, i);
 			emit_stubs(&i->request_list, i);

More information about the wayland-devel mailing list