summaryrefslogtreecommitdiff
path: root/libxklavier
diff options
context:
space:
mode:
authorSergey Udaltsov <svu@gnome.org>2011-01-29 23:11:24 +0000
committerSergey Udaltsov <svu@gnome.org>2011-01-29 23:11:24 +0000
commit3c48d9575b32ed6f9dc5f90d8144dd8965ee95d3 (patch)
tree00a444b8eb8b9155c012d38b8db8ba92776d519b /libxklavier
parentebda0858bb2b3ac5ac14384b8383449cfa3ef9e5 (diff)
downloadlibxklavier-3c48d9575b32ed6f9dc5f90d8144dd8965ee95d3.tar.gz
Checking that XI ext has version >=2
Otherwise DevicePresence may be missing/broken Trying to fix https://bugzilla.gnome.org/show_bug.cgi?id=583709
Diffstat (limited to 'libxklavier')
-rw-r--r--libxklavier/xklavier_xkb.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/libxklavier/xklavier_xkb.c b/libxklavier/xklavier_xkb.c
index 7cb8e59..9ee41dc 100644
--- a/libxklavier/xklavier_xkb.c
+++ b/libxklavier/xklavier_xkb.c
@@ -621,13 +621,19 @@ xkl_xkb_init(XklEngine * engine)
(display, "XInputExtension", &xi_opc,
&xkl_engine_backend(engine, XklXkb, xi_event_type),
&xkl_engine_backend(engine, XklXkb, xi_error_code))) {
- xkl_debug(150, "XInputExtension found (%d, %d, %d)\n",
- xi_opc,
+ XExtensionVersion *ev =
+ XGetExtensionVersion(display, "XInputExtension");
+ xkl_debug(150,
+ "XInputExtension found (%d, %d, %d) version %d.%d\n",
+ xi_opc, xkl_engine_backend(engine, XklXkb,
+ xi_event_type),
xkl_engine_backend(engine, XklXkb,
- xi_event_type),
- xkl_engine_backend(engine, XklXkb,
- xi_error_code));
- xkl_engine_priv(engine, features) |= XKLF_DEVICE_DISCOVERY;
+ xi_error_code),
+ ev->major_version, ev->minor_version);
+ if (ev->major_version >= 2)
+ xkl_engine_priv(engine, features) |=
+ XKLF_DEVICE_DISCOVERY;
+ XFree(ev);
} else {
xkl_debug(0, "XInputExtension not found\n");
xkl_engine_backend(engine, XklXkb, xi_event_type) = -1;