raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6f684f3a6a6cdb840c4231c0c626cde5ba1a22b1

commit 6f684f3a6a6cdb840c4231c0c626cde5ba1a22b1
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Mon Jan 18 17:21:50 2016 +0900

    ecore imf: fix imf module load hangs when not even configured
    
    so on some distributions scim tries to connect and hangs waiting for
    connect to work. this is a problem for just loading any imf module
    unless EXPLICITLY configured, so disable using an imf module unless it
    is specifically configured to work. this fixes this hang. this is a
    workaround though, but what else are we to do?
    
    @fix
---
 src/lib/ecore_imf/ecore_imf_context.c | 26 ++++++++++++++++++--------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/src/lib/ecore_imf/ecore_imf_context.c 
b/src/lib/ecore_imf/ecore_imf_context.c
index 5401785..4c85775 100644
--- a/src/lib/ecore_imf/ecore_imf_context.c
+++ b/src/lib/ecore_imf/ecore_imf_context.c
@@ -34,6 +34,8 @@ ecore_imf_context_available_ids_by_canvas_type_get(const char 
*canvas_type)
  * 'en', 'en_UK' against 'en_US' => 2
  *  all locales, against '*'     => 1
  */
+/* XXX: disable because nto used anymore - see below
+ * ecore_imf_context_default_id_by_canvas_type_get
 static int
 _ecore_imf_context_match_locale(const char *locale, const char *against, int 
against_len)
 {
@@ -48,6 +50,7 @@ _ecore_imf_context_match_locale(const char *locale, const 
char *against, int aga
 
    return 0;
 }
+*/
 
 EAPI const char *
 ecore_imf_context_default_id_get(void)
@@ -56,16 +59,10 @@ ecore_imf_context_default_id_get(void)
 }
 
 EAPI const char *
-ecore_imf_context_default_id_by_canvas_type_get(const char *canvas_type)
+ecore_imf_context_default_id_by_canvas_type_get(const char *canvas_type 
EINA_UNUSED)
 {
-   const char *id;
-   Eina_List *modules;
-   Ecore_IMF_Module *module;
-   char *locale;
-   char *tmp;
-   int best_goodness = 0;
+   const char *id = getenv("ECORE_IMF_MODULE");
 
-   id = getenv("ECORE_IMF_MODULE");
    if (id)
      {
         if (strcmp(id, "none") == 0) return NULL;
@@ -79,6 +76,18 @@ ecore_imf_context_default_id_by_canvas_type_get(const char 
*canvas_type)
              if (ecore_imf_module_get(id)) return id;
           }
      }
+   return NULL;
+/* XXX: I am not sure we need/want this. this causes imf modules to be
+ * used where ECORE_IMF_MODULE is not set (and this causes issues with things
+ * like scim where on some distros and some versions an scim connect BLOCKS
+ * and if no scim is around this means an app blocks/hangs ... so disable
+ * this so either you are in wayland mode OR you have to set
+ * ECORE_IMF_MODULE
+   Eina_List *modules;
+   Ecore_IMF_Module *module;
+   char *locale;
+   char *tmp;
+   int best_goodness = 0;
 
    modules = ecore_imf_module_available_get();
    if (!modules) return NULL;
@@ -119,6 +128,7 @@ ecore_imf_context_default_id_by_canvas_type_get(const char 
*canvas_type)
 
    free(locale);
    return id;
+ */
 }
 
 EAPI const Ecore_IMF_Context_Info *

-- 


Reply via email to