diff options
author | Sergey Udaltsov <svu@gnome.org> | 2009-09-29 23:17:57 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2009-09-29 23:17:57 +0000 |
commit | 560ef64c517dd9bb9711599e104a2f5d9f59a412 (patch) | |
tree | fef49a6040c633b0ab7db227fa0565b351b3d4b8 | |
parent | 741591ee510c61fe1269075a3c3c97d4ea4b17ae (diff) | |
download | libxklavier-560ef64c517dd9bb9711599e104a2f5d9f59a412.tar.gz |
save xinput error code
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | libxklavier/xklavier_private_xkb.h | 2 | ||||
-rw-r--r-- | libxklavier/xklavier_xkb.c | 26 |
3 files changed, 22 insertions, 8 deletions
@@ -2,6 +2,8 @@ * libxklavier/xklavier_evt.c: ignore BadDrawable error, https://bugs.edge.launchpad.net/ubuntu/+source/libxklavier/+bug/404924 + * libxklavier/xklavier_private_xkb.h, libxklavier/xklavier_xkb.c: save + xinput error code and event type 2009-08-29 svu diff --git a/libxklavier/xklavier_private_xkb.h b/libxklavier/xklavier_private_xkb.h index 3332012..894b1fb 100644 --- a/libxklavier/xklavier_private_xkb.h +++ b/libxklavier/xklavier_private_xkb.h @@ -48,6 +48,8 @@ typedef struct _XklXkb { #ifdef HAVE_XINPUT gint xi_event_type; + + gint xi_error_code; #endif } XklXkb; diff --git a/libxklavier/xklavier_xkb.c b/libxklavier/xklavier_xkb.c index 33da2fa..dd59dd2 100644 --- a/libxklavier/xklavier_xkb.c +++ b/libxklavier/xklavier_xkb.c @@ -353,8 +353,8 @@ xkl_xkb_get_server_state(XklEngine * engine, XklState * current_state_out) ¤t_state_out->indicators)) current_state_out->indicators &= xkl_engine_backend(engine, XklXkb, - cached_desc)-> - indicators->phys_indicators; + cached_desc)->indicators-> + phys_indicators; else current_state_out->indicators = 0; } @@ -402,8 +402,8 @@ xkl_xkb_set_indicator(XklEngine * engine, gint indicator_num, gboolean set) xkl_engine_backend (engine, XklXkb, device_id), - cached-> - names->indicators + cached->names-> + indicators [indicator_num], set, False, NULL); else { @@ -541,7 +541,7 @@ xkl_xkb_init(XklEngine * engine) #ifdef LIBXKBFILE_PRESENT gint opcode; gboolean xkl_xkb_ext_present; - int xi_opc, xi_event_type, xi_error_code; + int xi_opc; xkl_engine_priv(engine, backend_id) = "XKB"; xkl_engine_priv(engine, features) = XKLF_CAN_TOGGLE_INDICATORS | @@ -615,15 +615,25 @@ xkl_xkb_init(XklEngine * engine) xkl_engine_priv(engine, features) |= XKLF_MULTIPLE_LAYOUTS_SUPPORTED; +#if HAVE_XINPUT if (XQueryExtension (display, "XInputExtension", &xi_opc, - &xi_event_type, &xi_error_code)) { + &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, xi_event_type, xi_error_code); + xi_opc, + xkl_engine_backend(engine, XklXkb, + xi_event_type), + xkl_engine_backend(engine, XklXkb, + xi_error_code)); xkl_engine_priv(engine, features) |= XKLF_DEVICE_DISCOVERY; - } else + } else { xkl_debug(0, "XInputExtension not found\n"); + xkl_engine_backend(engine, XklXkb, xi_event_type) = -1; + xkl_engine_backend(engine, XklXkb, xi_error_code) = -1; + } return 0; +#endif #else xkl_debug(160, "NO XKB LIBS, display: %p, root: " WINID_FORMAT |