From cea415fc4068614275dd82a607517b0ffbae8533 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 23 Apr 2026 21:17:07 +1000 Subject: [PATCH] eis: send missing ei_text interface version The protocol test we had was broken, it would assume that any interface we send was present instead of only taking the ones the server replied with. Fix this so this triggers next time. Fixes: 1f9be0fd0aa9 ("Add a new text interface for sending keysyms and utf8 text") Part-of: --- src/libeis-handshake.c | 1 + test/test_protocol.py | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/libeis-handshake.c b/src/libeis-handshake.c index 9a72442..d2d33df 100644 --- a/src/libeis-handshake.c +++ b/src/libeis-handshake.c @@ -136,6 +136,7 @@ client_msg_finish(struct eis_handshake *setup) SEND_INTERFACE_VERSION(EIS_SCROLL, ei_scroll); SEND_INTERFACE_VERSION(EIS_KEYBOARD, ei_keyboard); SEND_INTERFACE_VERSION(EIS_TOUCHSCREEN, ei_touchscreen); + SEND_INTERFACE_VERSION(EIS_TEXT, ei_text); #undef SEND_INTERFACE_VERSION diff --git a/test/test_protocol.py b/test/test_protocol.py index 047bd33..60420b3 100644 --- a/test/test_protocol.py +++ b/test/test_protocol.py @@ -171,16 +171,18 @@ class Ei: self.send(setup.ContextType(EiHandshake.EiContextType.SENDER)) self.send(setup.Name("test client")) + requested_versions = {} + def on_interface_version(_, name, version): logger.debug(f"Interface {name} v{version}") - assert version <= self.interface_versions[name] + assert version <= requested_versions[name] self.interface_versions[name] = version self.handshake.connect("InterfaceVersion", on_interface_version) for iname in filter(lambda i: i != InterfaceName.EI_HANDSHAKE, InterfaceName): version = interface_versions.get(iname, VERSION_V(1)) - self.interface_versions[iname] = version + requested_versions[iname] = version self.send(setup.InterfaceVersion(iname, version)) self.send(setup.Finish()) @@ -419,6 +421,12 @@ class TestEiProtocol: assert ei.interface_versions[InterfaceName.EI_CALLBACK] == VERSION_V(1) + # Make sure we get all interfaces + for iname in filter( + lambda iname: iname != InterfaceName.EI_HANDSHAKE, InterfaceName + ): + assert iname in ei.interface_versions + # Right now all our versions are 1, so let's ensure that's true for name, version in ei.interface_versions.items(): print(name, version) @@ -445,6 +453,7 @@ class TestEiProtocol: # Right now all our EIS versions are 1, despite whatever we announce for name, version in ei.interface_versions.items(): + print(name, version) assert version == VERSION_V(1), f"For interface {name}" eis.terminate() @@ -573,6 +582,7 @@ class TestEiProtocol: InterfaceName.EI_TOUCHSCREEN, InterfaceName.EI_SCROLL, InterfaceName.EI_BUTTON, + InterfaceName.EI_TEXT, ]: ei.send( setup.InterfaceVersion(interface, VERSION_V(1)) @@ -614,6 +624,7 @@ class TestEiProtocol: InterfaceName.EI_SCROLL, InterfaceName.EI_KEYBOARD, InterfaceName.EI_TOUCHSCREEN, + InterfaceName.EI_TEXT, ) ] )