[PATCH wayland 6/6] scanner: Generate macros for getting the 'since' version of an event

Jonas Ådahl jadahl at gmail.com
Thu May 8 14:39:49 PDT 2014


This could be useful for compositors who need to be able to not send
events if the client bound a version lower than the newest provided.

Event version numbers are exposed as
[INTERFACE_NAME]_[EVENT_NAME]_SINCE_VERSION for example wl_output.scale
will have the version macro WL_OUTPUT_SCALE_SINCE_VERSION.

Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
---
 src/scanner.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/scanner.c b/src/scanner.c
index 28fadb0..80c466e 100644
--- a/src/scanner.c
+++ b/src/scanner.c
@@ -579,6 +579,18 @@ emit_opcodes(struct wl_list *message_list, struct interface *interface)
 }
 
 static void
+emit_opcode_versions(struct wl_list *message_list, struct interface *interface)
+{
+	struct message *m;
+
+	wl_list_for_each(m, message_list, link)
+		printf("#define %s_%s_SINCE_VERSION\t%d\n",
+		       interface->uppercase_name, m->uppercase_name, m->since);
+
+	printf("\n");
+}
+
+static void
 emit_type(struct arg *a)
 {
 	switch (a->type) {
@@ -1004,6 +1016,7 @@ emit_header(struct protocol *protocol, int server)
 		if (server) {
 			emit_structs(&i->request_list, i);
 			emit_opcodes(&i->event_list, i);
+			emit_opcode_versions(&i->event_list, i);
 			emit_event_wrappers(&i->event_list, i);
 		} else {
 			emit_structs(&i->event_list, i);
-- 
1.9.1



More information about the wayland-devel mailing list