diff options
author | Sergey Udaltsov <svu@gnome.org> | 2011-01-29 23:11:24 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2011-01-29 23:11:24 +0000 |
commit | 3c48d9575b32ed6f9dc5f90d8144dd8965ee95d3 (patch) | |
tree | 00a444b8eb8b9155c012d38b8db8ba92776d519b /libxklavier | |
parent | ebda0858bb2b3ac5ac14384b8383449cfa3ef9e5 (diff) | |
download | libxklavier-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.c | 18 |
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; |