diff options
| author | Jonas Ådahl <jadahl@gmail.com> | 2014-05-08 23:39:49 +0200 |
|---|---|---|
| committer | Kristian Høgsberg <krh@bitplanet.net> | 2014-05-09 14:33:20 -0700 |
| commit | 35be5a7c65a47e3547c5b6250141e135ee109a6d (patch) | |
| tree | ec811ace65611ced95669170dd55ad454c5eb71a /src/scanner.c | |
| parent | tests: Add message version sanity test (diff) | |
| download | wayland-35be5a7c65a47e3547c5b6250141e135ee109a6d.tar wayland-35be5a7c65a47e3547c5b6250141e135ee109a6d.tar.gz wayland-35be5a7c65a47e3547c5b6250141e135ee109a6d.tar.bz2 wayland-35be5a7c65a47e3547c5b6250141e135ee109a6d.tar.lz wayland-35be5a7c65a47e3547c5b6250141e135ee109a6d.tar.xz wayland-35be5a7c65a47e3547c5b6250141e135ee109a6d.tar.zst wayland-35be5a7c65a47e3547c5b6250141e135ee109a6d.zip | |
scanner: Generate macros for getting the 'since' version of an event
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@gmail.com>
Diffstat (limited to 'src/scanner.c')
| -rw-r--r-- | src/scanner.c | 13 |
1 files changed, 13 insertions, 0 deletions
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); |
