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;

-- 


Reply via email to