LOGI("e_input_panel_visibility_change : %d", visible);
- ecore_thread_main_loop_begin();
-
vconf_set_int (VCONFKEY_ISF_INPUT_PANEL_STATE, visible ? VCONFKEY_ISF_INPUT_PANEL_STATE_SHOW : VCONFKEY_ISF_INPUT_PANEL_STATE_HIDE);
EINA_LIST_FOREACH(g_input_panel->surfaces, l, ips)
_e_input_panel_surface_visible_update(ips);
}
- ecore_thread_main_loop_end();
-
_wait_update_timer_del();
}
_cancel_will_hide_timer();
zone = e_zone_current_get();
- ecore_thread_main_loop_begin();
effect_run = e_input_panel_is_effect_running();
- ecore_thread_main_loop_end();
if (zone && (zone->display_state == E_ZONE_DISPLAY_STATE_OFF))
timeout = 0.0f;
else if (effect_run)
if (_context_created)
_e_text_input_deactivate(text_input, input_method, EINA_FALSE);
- ecore_thread_main_loop_begin();
e_input_panel_wait_update_set(EINA_FALSE);
- ecore_thread_main_loop_end();
/* When the input panel surface is hidden, the candidate will hide too */
g_show_state_candidate = EINA_FALSE;
free(context);
}
+static void
+_input_panel_hide_async_cb(void *data)
+{
+ if (g_text_input && g_text_input->resource && g_client)
+ _input_panel_hide(g_client, g_text_input->resource, EINA_FALSE);
+
+ g_disable_show_panel = EINA_TRUE;
+}
+
static Eina_Bool
_e_mod_ecore_key_down_cb(void *data, int type, void *event)
{
SECURE_LOGI("Hide IME (key : %s)", ev->key);
- if (g_text_input && g_text_input->resource && g_client)
- _input_panel_hide(g_client, g_text_input->resource, EINA_FALSE);
-
- g_disable_show_panel = EINA_TRUE;
+ ecore_main_loop_thread_safe_call_async(_input_panel_hide_async_cb, NULL);
return ECORE_CALLBACK_PASS_ON;
}