From 059d3e11b61e22100b76470aa76a4c21cec4922f Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 7 Jun 2023 15:20:28 +1000 Subject: [PATCH] eis: send all our interface versions to the client The protocol requires this only for interfaces that create client-side objects but let's do it here anyway to ensure the code is tested. --- src/libeis-handshake.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/libeis-handshake.c b/src/libeis-handshake.c index b4bd0a1..90a4de5 100644 --- a/src/libeis-handshake.c +++ b/src/libeis-handshake.c @@ -118,10 +118,25 @@ client_msg_finish(struct eis_handshake *setup) return brei_result_new(EIS_CONNECTION_DISCONNECT_REASON_PROTOCOL, "Missing versions for required interfaces"); - /* ei_callback needs a client-created object, so tell the client - * about our version */ - eis_handshake_event_interface_version(setup, EIS_CALLBACK_INTERFACE_NAME, - setup->client_versions.ei_callback); + /* ei_callback needs a client-created object, so we must tell the client + * about our version. But for convenience and to make sure this all works + * send all our versions down the wire */ +#define SEND_INTERFACE_VERSION(upper_name_, lower_name_) \ + eis_handshake_event_interface_version(setup, upper_name_ ##_INTERFACE_NAME, \ + setup->client_versions.lower_name_); + + SEND_INTERFACE_VERSION(EIS_CALLBACK, ei_callback); + SEND_INTERFACE_VERSION(EIS_CONNECTION, ei_connection); + SEND_INTERFACE_VERSION(EIS_PINGPONG, ei_pingpong); + SEND_INTERFACE_VERSION(EIS_SEAT, ei_seat); + SEND_INTERFACE_VERSION(EIS_DEVICE, ei_device); + SEND_INTERFACE_VERSION(EIS_POINTER, ei_pointer); + SEND_INTERFACE_VERSION(EIS_POINTER_ABSOLUTE, ei_pointer_absolute); + SEND_INTERFACE_VERSION(EIS_BUTTON, ei_button); + SEND_INTERFACE_VERSION(EIS_KEYBOARD, ei_keyboard); + SEND_INTERFACE_VERSION(EIS_TOUCHSCREEN, ei_touchscreen); + +#undef SEND_INTERFACE_VERSION eis_client_setup_done(client, setup->name, setup->is_sender, &setup->client_versions);