From 0e4b5bde889b8ebcf3a9be7a592b22c3d0188041 Mon Sep 17 00:00:00 2001 From: InHong Han Date: Thu, 27 Aug 2020 14:44:25 +0900 Subject: [PATCH] Modified to prevent duplicate calls the imdata callback in TV Change-Id: I2b17d046e0af15de4dc4cfcf3c7c9a61c320f929 --- ism/src/scim_helper.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/ism/src/scim_helper.cpp b/ism/src/scim_helper.cpp index 7cb5f08..984052e 100644 --- a/ism/src/scim_helper.cpp +++ b/ism/src/scim_helper.cpp @@ -166,6 +166,7 @@ public: int need_update_selection_text; uint32 layout; bool ise_show_flag; + bool hw_keyboard_mode; bool need_update_entry_metadata; bool ise_focus_flag; char* finalized_text; @@ -241,7 +242,7 @@ public: HelperAgentImpl (HelperAgent* thiz) : magic(0), magic_active(0), timeout(-1), focused_ic ((uint32) -1), thiz (thiz), surrounding_text (NULL), selection_text (NULL), cursor_pos (0), need_update_surrounding_text (0), need_update_selection_text (0), - layout (0), ise_show_flag (false), need_update_entry_metadata (false), ise_focus_flag (false), + layout (0), ise_show_flag (false), hw_keyboard_mode (false), need_update_entry_metadata (false), ise_focus_flag (false), finalized_text(NULL), finalized_cursor_pos(0) { } @@ -588,7 +589,7 @@ public: } } private: - HelperAgentImpl () : magic (0), magic_active (0), timeout (-1), focused_ic ((uint32) -1), thiz (NULL), surrounding_text (NULL), selection_text (NULL), cursor_pos (0), need_update_surrounding_text (0), need_update_selection_text (0), layout (0), ise_show_flag (false), need_update_entry_metadata (false), ise_focus_flag (false), finalized_text (NULL), finalized_cursor_pos (0) { } + HelperAgentImpl () : magic (0), magic_active (0), timeout (-1), focused_ic ((uint32) -1), thiz (NULL), surrounding_text (NULL), selection_text (NULL), cursor_pos (0), need_update_surrounding_text (0), need_update_selection_text (0), layout (0), ise_show_flag (false), hw_keyboard_mode (false), need_update_entry_metadata (false), ise_focus_flag (false), finalized_text (NULL), finalized_cursor_pos (0) { } }; static MessageQueue message_queue; @@ -947,7 +948,7 @@ HelperAgent::handle_message (MessageItem *message) MessageItemUpdateCursorPosition *subclass = static_cast(message); m_impl->cursor_pos = subclass->get_cursor_pos_ref(); LOGD ("update cursor position %d", subclass->get_cursor_pos_ref()); - if (m_impl->ise_show_flag || m_impl->need_update_entry_metadata) { + if (m_impl->ise_show_flag || m_impl->hw_keyboard_mode || m_impl->need_update_entry_metadata) { m_impl->signal_update_cursor_position (this, subclass->get_ic_ref(), subclass->get_ic_uuid_ref(), subclass->get_cursor_pos_ref()); } @@ -1020,6 +1021,7 @@ HelperAgent::handle_message (MessageItem *message) if (!m_impl->si.null ()) m_impl->si->focus_out(); if (!_TV) m_impl->ise_show_flag = false; + m_impl->need_update_entry_metadata = false; break; } case SCIM_TRANS_CMD_FOCUS_IN: @@ -1071,7 +1073,7 @@ HelperAgent::handle_message (MessageItem *message) case ISM_TRANS_CMD_SET_ISE_MODE: { MessageItemSetISEMode *subclass = static_cast(message); - if (m_impl->ise_show_flag || m_impl->need_update_entry_metadata) { + if (m_impl->ise_show_flag || m_impl->hw_keyboard_mode || m_impl->need_update_entry_metadata) { m_impl->signal_set_mode (this, subclass->get_mode_ref()); } break; @@ -1079,7 +1081,7 @@ HelperAgent::handle_message (MessageItem *message) case ISM_TRANS_CMD_SET_ISE_LANGUAGE: { MessageItemSetISELanguage *subclass = static_cast(message); - if (m_impl->ise_show_flag || m_impl->need_update_entry_metadata) { + if (m_impl->ise_show_flag || m_impl->hw_keyboard_mode || m_impl->need_update_entry_metadata) { m_impl->signal_set_language (this, subclass->get_language_ref()); } break; @@ -1087,7 +1089,7 @@ HelperAgent::handle_message (MessageItem *message) case ISM_TRANS_CMD_SET_ISE_IMDATA: { MessageItemSetISEImData *subclass = static_cast(message); - if (m_impl->ise_show_flag || m_impl->need_update_entry_metadata) { + if (m_impl->ise_show_flag || m_impl->hw_keyboard_mode) { m_impl->signal_set_imdata (this, *(subclass->get_imdata_ptr()), subclass->get_len_ref()); } if (!m_impl->si.null ()) m_impl->si->set_imdata(*(subclass->get_imdata_ptr()), @@ -1126,7 +1128,7 @@ HelperAgent::handle_message (MessageItem *message) case ISM_TRANS_CMD_SET_RETURN_KEY_TYPE: { MessageItemSetReturnKeyType *subclass = static_cast(message); - if (m_impl->ise_show_flag || m_impl->need_update_entry_metadata) { + if (m_impl->ise_show_flag || m_impl->hw_keyboard_mode || m_impl->need_update_entry_metadata) { m_impl->signal_set_return_key_type (this, subclass->get_type_ref()); } break; @@ -1144,7 +1146,7 @@ HelperAgent::handle_message (MessageItem *message) case ISM_TRANS_CMD_SET_RETURN_KEY_DISABLE: { MessageItemSetReturnKeyDisable *subclass = static_cast(message); - if (m_impl->ise_show_flag || m_impl->need_update_entry_metadata) { + if (m_impl->ise_show_flag || m_impl->hw_keyboard_mode || m_impl->need_update_entry_metadata) { m_impl->signal_set_return_key_disable (this, subclass->get_disabled_ref()); } break; @@ -1185,7 +1187,7 @@ HelperAgent::handle_message (MessageItem *message) { MessageItemSetLayout *subclass = static_cast(message); m_impl->layout = subclass->get_layout_ref(); - if (m_impl->ise_show_flag || m_impl->need_update_entry_metadata) { + if (m_impl->ise_show_flag || m_impl->hw_keyboard_mode || m_impl->need_update_entry_metadata) { m_impl->signal_set_layout (this, subclass->get_layout_ref()); } if (!m_impl->si.null ()) m_impl->si->set_layout(subclass->get_layout_ref()); @@ -1205,7 +1207,7 @@ HelperAgent::handle_message (MessageItem *message) case ISM_TRANS_CMD_SET_INPUT_MODE: { MessageItemSetInputMode *subclass = static_cast(message); - if (m_impl->ise_show_flag || m_impl->need_update_entry_metadata) { + if (m_impl->ise_show_flag || m_impl->hw_keyboard_mode || m_impl->need_update_entry_metadata) { m_impl->signal_set_input_mode (this, subclass->get_input_mode_ref()); } break; @@ -1387,7 +1389,7 @@ HelperAgent::handle_message (MessageItem *message) case ISM_TRANS_CMD_SET_INPUT_HINT: { MessageItemSetInputHint *subclass = static_cast(message); - if (m_impl->ise_show_flag || m_impl->need_update_entry_metadata) { + if (m_impl->ise_show_flag || m_impl->hw_keyboard_mode || m_impl->need_update_entry_metadata) { m_impl->signal_set_input_hint (this, subclass->get_input_hint_ref()); } if (!m_impl->si.null ()) m_impl->si->set_input_hint(subclass->get_input_hint_ref()); @@ -1454,9 +1456,9 @@ HelperAgent::handle_message (MessageItem *message) { MessageItemSetKeyboardMode *subclass = static_cast(message); if (subclass->get_mode_ref()) - m_impl->need_update_entry_metadata = false; + m_impl->hw_keyboard_mode = false; else - m_impl->need_update_entry_metadata = true; + m_impl->hw_keyboard_mode = true; break; } case ISM_TRANS_CMD_SET_PREDICTION_HINT: @@ -1468,7 +1470,7 @@ HelperAgent::handle_message (MessageItem *message) case ISM_TRANS_CMD_SET_MIME_TYPE: { MessageItemSetMimeType *subclass = static_cast(message); - if (m_impl->ise_show_flag || m_impl->need_update_entry_metadata) { + if (m_impl->ise_show_flag || m_impl->hw_keyboard_mode || m_impl->need_update_entry_metadata) { m_impl->signal_set_mime_type (this, subclass->get_mime_type_ref()); } break; -- 2.7.4