clients: Make XKB compose support conditional
authorDaniel Stone <daniels@collabora.com>
Thu, 20 Oct 2016 13:45:58 +0000 (14:45 +0100)
committerDaniel Stone <daniels@collabora.com>
Mon, 24 Oct 2016 09:48:34 +0000 (10:48 +0100)
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 <daniels@collabora.com>
Reviewed-by: Daniel Díaz <daniel.diaz@linaro.org>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
clients/window.c
configure.ac

index 5e41210..84d585e 100644 (file)
@@ -63,7 +63,9 @@ typedef void *EGLContext;
 #endif /* no HAVE_CAIRO_EGL */
 
 #include <xkbcommon/xkbcommon.h>
+#ifdef HAVE_XKBCOMMON_COMPOSE
 #include <xkbcommon/xkbcommon-compose.h>
+#endif
 #include <wayland-cursor.h>
 
 #include <linux/input.h>
@@ -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
index 37da695..1e251bf 100644 (file)
@@ -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],,