Make sure key events are processed before subsequent commit messages 17/183317/1
authorJi-hoon Lee <dalton.lee@samsung.com>
Wed, 4 Jul 2018 00:52:41 +0000 (09:52 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Wed, 4 Jul 2018 09:52:48 +0000 (09:52 +0000)
Change-Id: I4c4f5d663d26439b5b342b00043292696a7778d3
(cherry picked from commit a51d21ce5f14df49fac89ff16ccf51dead2f3697)

src/legacy_support/websocket.cpp

index ada9e47..4bc9f87 100644 (file)
@@ -1111,6 +1111,7 @@ bool CWebHelperAgentWebSocket::process_recved_messages_until_reply_found(std::st
 
 void CWebHelperAgentWebSocket::handle_recved_message(ISE_MESSAGE &message)
 {
+    static bool _key_event_processing = false;
     if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_LOG]) == 0) {
         std::string str = "";
         for (unsigned int loop = 0;loop < message.values.size();loop++) {
@@ -1121,8 +1122,6 @@ void CWebHelperAgentWebSocket::handle_recved_message(ISE_MESSAGE &message)
         }
         log(str.c_str());
     } else if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_COMMIT_STRING]) == 0) {
-        send_key_event(0xff6b, 0); // Temporarily reset keyboard engine
-
         std::string str = "";
         for (unsigned int loop = 0;loop < message.values.size();loop++) {
             str += message.values.at(loop).c_str();
@@ -1130,6 +1129,13 @@ void CWebHelperAgentWebSocket::handle_recved_message(ISE_MESSAGE &message)
                 str += " ";
             }
         }
+        if (_key_event_processing) {
+            struct timeval tv;
+            tv.tv_sec = 0;
+            tv.tv_usec = 50000;
+            select(0, NULL, NULL, NULL, &tv);
+            _key_event_processing = false;
+        }
         commit_string(str.c_str());
     } else if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_UPDATE_PREEDIT_STRING]) == 0) {
         std::string str = "";
@@ -1142,7 +1148,8 @@ void CWebHelperAgentWebSocket::handle_recved_message(ISE_MESSAGE &message)
         update_preedit_string(str.c_str());
     } else if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SEND_KEY_EVENT]) == 0) {
         if (message.values.size() == 1) {
-            send_key_event(atoi(message.values.at(0).c_str()), 0);
+            forward_key_event(atoi(message.values.at(0).c_str()));
+            _key_event_processing = true;
         }
     } else if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SET_KEYBOARD_SIZES]) == 0) {
         LOGD("ISE_MESSAGE_COMMAND_SET_KEYBOARD_SIZES");