[PATCH weston] clients: Make XKB compose support conditional

Daniel Diaz daniel.diaz at linaro.org
Sun Oct 23 13:27:41 UTC 2016


Hello!


On 22 October 2016 at 09:09, Daniel Stone <daniels at collabora.com> wrote:
> Debian Jessie's version of libxkbcommon is too old for compose support,
> so rather than force people to upgrade, let's make it conditional.

Tested on Ubuntu 14.04 with libxkbcommon-dev 0.4.1.


> Signed-off-by: Daniel Stone <daniels at collabora.com>
Reviewed-by: Daniel Díaz <daniel.diaz at linaro.org>

Thanks and greetings!

Daniel Díaz
daniel.diaz at linaro.org



> Cc: Bryce Harrington <bryce at osg.samsung.com>
> ---
>  clients/window.c | 12 ++++++++++++
>  configure.ac     |  4 ++++
>  2 files changed, 16 insertions(+)
>
> diff --git a/clients/window.c b/clients/window.c
> index 5e41210..84d585e 100644
> --- a/clients/window.c
> +++ b/clients/window.c
> @@ -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
> diff --git a/configure.ac b/configure.ac
> index 37da695..1e251bf 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],,
> --
> 2.9.3
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list