devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=6b14714b5636c2fe9625a254c64a9941b125b536
commit 6b14714b5636c2fe9625a254c64a9941b125b536 Author: Chris Michael <cp.mich...@samsung.com> Date: Thu Aug 20 10:35:24 2015 -0400 ecore-wl2: Create new xkb context for each display when connected Signed-off-by: Chris Michael <cp.mich...@samsung.com> --- src/lib/ecore_wl2/ecore_wl2_display.c | 12 ++++++++++-- src/lib/ecore_wl2/ecore_wl2_private.h | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/lib/ecore_wl2/ecore_wl2_display.c b/src/lib/ecore_wl2/ecore_wl2_display.c index f372d70..58337c7 100644 --- a/src/lib/ecore_wl2/ecore_wl2_display.c +++ b/src/lib/ecore_wl2/ecore_wl2_display.c @@ -254,7 +254,7 @@ ecore_wl2_display_connect(const char *name) if (!ewd->wl.display) { ERR("Could not connect to display %s: %m", name); - goto err; + goto connect_err; } ewd->fd_hdl = @@ -265,9 +265,17 @@ ecore_wl2_display_connect(const char *name) wl_registry_add_listener(wl_display_get_registry(ewd->wl.display), &_registry_listener, ewd); + ewd->xkb_context = xkb_context_new(0); + if (!ewd->xkb_context) goto context_err; + return ewd; -err: +context_err: + ecore_main_fd_handler_del(ewd->fd_hdl); + wl_registry_destroy(wl_display_get_registry(ewd->wl.display)); + wl_display_disconnect(ewd->wl.display); + +connect_err: eina_hash_free(ewd->globals); free(ewd); return NULL; diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h b/src/lib/ecore_wl2/ecore_wl2_private.h index 0cdae19..6b4c12e 100644 --- a/src/lib/ecore_wl2/ecore_wl2_private.h +++ b/src/lib/ecore_wl2/ecore_wl2_private.h @@ -54,6 +54,8 @@ struct _Ecore_Wl2_Display struct xdg_shell *xdg_shell; } wl; + struct xkb_context *xkb_context; + Ecore_Fd_Handler *fd_hdl; Eina_Hash *globals; --