From 5b01596e3f571390b503cb074ca893c71ac21dcb Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Thu, 20 Oct 2016 14:45:58 +0100 Subject: [PATCH] clients: Make XKB compose support conditional MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Debian Jessie's version of libxkbcommon is too old for compose support, so rather than force people to upgrade, let's make it conditional. Signed-off-by: Daniel Stone Reviewed-by: Daniel Díaz Reviewed-by: Bryce Harrington --- clients/window.c | 12 ++++++++++++ configure.ac | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/clients/window.c b/clients/window.c index 5e41210b..84d585e5 100644 --- a/clients/window.c +++ b/clients/window.c @@ -63,7 +63,9 @@ typedef void *EGLContext; #endif /* no HAVE_CAIRO_EGL */ #include +#ifdef HAVE_XKBCOMMON_COMPOSE #include +#endif #include #include @@ -373,8 +375,10 @@ struct input { struct { struct xkb_keymap *keymap; struct xkb_state *state; +#ifdef HAVE_XKBCOMMON_COMPOSE struct xkb_compose_table *compose_table; struct xkb_compose_state *compose_state; +#endif xkb_mod_mask_t control_mask; xkb_mod_mask_t alt_mask; xkb_mod_mask_t shift_mask; @@ -2982,8 +2986,10 @@ keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard, struct input *input = data; struct xkb_keymap *keymap; struct xkb_state *state; +#ifdef HAVE_XKBCOMMON_COMPOSE struct xkb_compose_table *compose_table; struct xkb_compose_state *compose_state; +#endif char *locale; char *map_str; @@ -3031,6 +3037,7 @@ keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard, locale = "C"; /* Set up XKB compose table */ +#ifdef HAVE_XKBCOMMON_COMPOSE compose_table = xkb_compose_table_new_from_locale(input->display->xkb_context, locale, @@ -3054,6 +3061,7 @@ keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard, fprintf(stderr, "could not create XKB compose table for locale '%s'. " "Disabiling compose\n", locale); } +#endif xkb_keymap_unref(input->xkb.keymap); xkb_state_unref(input->xkb.state); @@ -3099,6 +3107,7 @@ keyboard_handle_leave(void *data, struct wl_keyboard *keyboard, static xkb_keysym_t process_key_press(xkb_keysym_t sym, struct input *input) { +#ifdef HAVE_XKBCOMMON_COMPOSE if (sym == XKB_KEY_NoSymbol) return sym; if (xkb_compose_state_feed(input->xkb.compose_state, @@ -3117,6 +3126,9 @@ process_key_press(xkb_keysym_t sym, struct input *input) default: return sym; } +#else + return sym; +#endif } static void diff --git a/configure.ac b/configure.ac index 37da695c..1e251bfe 100644 --- a/configure.ac +++ b/configure.ac @@ -146,6 +146,10 @@ AC_ARG_ENABLE(xkbcommon, if test x$enable_xkbcommon = xyes; then AC_DEFINE(ENABLE_XKBCOMMON, [1], [Build Weston with libxkbcommon support]) COMPOSITOR_MODULES="$COMPOSITOR_MODULES xkbcommon >= 0.3.0" + PKG_CHECK_MODULES(XKBCOMMON_COMPOSE, [xkbcommon >= 0.5.0], + [AC_DEFINE(HAVE_XKBCOMMON_COMPOSE, 1, + [Define if xkbcommon is 0.5.0 or newer])], + true) fi AC_ARG_ENABLE(setuid-install, [ --enable-setuid-install],,