From 69c9db4016e8702cb3d5fdb5ab8b30086c6c0a45 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 19 Apr 2009 21:37:34 +0200 Subject: [PATCH] =?utf8?q?Add=20conditional=20for=20the=200.3.3=20?= =?utf8?q?=E2=86=92=200.3.4=20API=20fix=20in=20libxcb-keysyms?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Makefile | 6 ++++++ src/xcb.c | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index dbe56b4b..bd4a8eca 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,12 @@ CFLAGS += -Iinclude CFLAGS += -I/usr/local/include CFLAGS += -DI3_VERSION=\"${GIT_VERSION}\" +ifeq ($(shell pkg-config --exact-version=0.3.3 xcb-keysyms && echo 1),1) +# xcb-keysyms fixed API from 0.3.3 to 0.3.4, so for some months, we will +# have this here. Distributions should upgrade their libxcb in the meantime. +CFLAGS += -DOLD_XCB_KEYSYMS_API +endif + LDFLAGS += -lm LDFLAGS += -lxcb-event LDFLAGS += -lxcb-property diff --git a/src/xcb.c b/src/xcb.c index 15f977dc..0daf4b42 100644 --- a/src/xcb.c +++ b/src/xcb.c @@ -236,7 +236,7 @@ void xcb_get_numlock_mask(xcb_connection_t *conn) { xcb_key_symbols_t *keysyms; xcb_get_modifier_mapping_cookie_t cookie; xcb_get_modifier_mapping_reply_t *reply; - xcb_keycode_t *modmap, numlock; + xcb_keycode_t *modmap; int mask, i; const int masks[8] = { XCB_MOD_MASK_SHIFT, XCB_MOD_MASK_LOCK, @@ -261,7 +261,13 @@ void xcb_get_numlock_mask(xcb_connection_t *conn) { modmap = xcb_get_modifier_mapping_keycodes(reply); /* Get the keycode for numlock */ - numlock = xcb_key_symbols_get_keycode(keysyms, XCB_NUM_LOCK); +#ifdef OLD_XCB_KEYSYMS_API + xcb_keysym_t numlock = xcb_key_symbols_get_keycode(keysyms, XCB_NUM_LOCK); +#else + /* For now, we only use the first keysymbol. */ + xcb_keysym_t *numlock_syms = xcb_key_symbols_get_keycode(keysyms, XCB_NUM_LOCK); + xcb_keysym_t numlock = *numlock_syms; +#endif /* Check all modifiers (Mod1-Mod5, Shift, Control, Lock) */ for (mask = 0; mask < sizeof(masks); mask++) -- 2.39.5