diff options
author | Li Zhang <li2012.zhang@samsung.com> | 2016-08-23 12:57:59 +0800 |
---|---|---|
committer | Li Zhang <li2012.zhang@samsung.com> | 2016-08-23 12:57:59 +0800 |
commit | 3bea39c34729fa26a8d6401b2c643076f6e6075a (patch) | |
tree | 25f2ef720ea1543594a172b61526e0774eac008f | |
parent | c1a228aa343105ce52de710d04003e209765ebe6 (diff) | |
download | isf-3bea39c34729fa26a8d6401b2c643076f6e6075a.tar.gz isf-3bea39c34729fa26a8d6401b2c643076f6e6075a.tar.bz2 isf-3bea39c34729fa26a8d6401b2c643076f6e6075a.zip |
Fix infinite loop issue in case of EcoreSocket PanelAgent module unloading
Change-Id: I1b59096fd5a28d5c11a9ec9ad6d5adea521ad55c
-rw-r--r-- | ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp | 9 | ||||
-rw-r--r-- | ism/src/isf_info_manager.cpp | 5 | ||||
-rw-r--r-- | ism/src/scim_helper.cpp | 1 |
3 files changed, 5 insertions, 10 deletions
diff --git a/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp b/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp index e57e5434..65849b8f 100644 --- a/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp +++ b/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp @@ -252,6 +252,7 @@ static Input_Language input_lang static struct weescim _wsc = {0}; InfoManager* g_info_manager = NULL; +static scim::PanelAgentPointer instance; ///////////////////////////////////////////////////////////////////////////// @@ -1773,13 +1774,12 @@ isf_wsc_context_filter_key_event (WSCContextISF* wsc_ctx, if (!ignore_key) { if (!_focused_ic || !_focused_ic->impl || !_focused_ic->impl->is_on) { LOGD ("ic is off"); - } else { - g_info_manager->process_key_event (key, serial); + } else if (g_info_manager->process_key_event (key, serial)){ return; } } - - wl_input_method_context_filter_key_event_done (wsc_ctx->im_ctx, serial, EINA_FALSE); + if (!instance.null()) + instance->process_key_event_done(WAYLAND_MODULE_CLIENT_ID, wsc_ctx->id, key, EINA_FALSE, serial); } #endif @@ -3060,7 +3060,6 @@ public: } }; -static scim::PanelAgentPointer instance; extern "C" { EXAPI void scim_module_init (void) diff --git a/ism/src/isf_info_manager.cpp b/ism/src/isf_info_manager.cpp index ab3bea25..7c597b82 100644 --- a/ism/src/isf_info_manager.cpp +++ b/ism/src/isf_info_manager.cpp @@ -1386,11 +1386,6 @@ public: ctx = get_helper_ic (client, context); return m_panel_agent_manager.process_key_event (it->second.id, ctx, m_current_helper_uuid, key, serial); } - else { -#if !(ENABLE_GRAB_KEYBOARD) - process_key_event_done (key, false, serial); -#endif - } return false; } diff --git a/ism/src/scim_helper.cpp b/ism/src/scim_helper.cpp index b4f7ee9c..417965ba 100644 --- a/ism/src/scim_helper.cpp +++ b/ism/src/scim_helper.cpp @@ -530,6 +530,7 @@ public: } public: void process_key_event_done(KeyEvent &key, uint32 ret, uint32 serial) { + LOGD ("ret: %d, serial: %d", ret, serial); if (socket_active.is_connected ()) { send.clear (); send.put_command (SCIM_TRANS_CMD_REQUEST); |