Make timer operation run within an ecore_thread_main_loop block 02/213402/2
authorJi-hoon Lee <dalton.lee@samsung.com>
Thu, 5 Sep 2019 04:21:08 +0000 (13:21 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Thu, 5 Sep 2019 04:40:45 +0000 (13:40 +0900)
Change-Id: I0b719fb1938b5aba0ed374cbde176b2080ece8ad

src/legacy_support/websocket.cpp

index 4bc9f87..63eee08 100644 (file)
@@ -186,7 +186,7 @@ static Ecore_Timer *g_flush_server_recv_buffer_timer = NULL;
 static std::string server_recv_buffer;
 static Eina_Bool flush_server_recv_buffer_func(void *user)
 {
-    LOGD("");
+    LOGD("flushing recv buffer");
     CWebHelperAgentWebSocket *agent = CWebHelperAgentWebSocket::get_current_instance();
     struct per_session_data__keyboard *pss = (struct per_session_data__keyboard *)user;
 
@@ -335,8 +335,12 @@ static int callback_keyboard(struct lws *wsi,
 
     case LWS_CALLBACK_RECEIVE:
         if (in) {
-            if (g_flush_server_recv_buffer_timer)
+            if (g_flush_server_recv_buffer_timer) {
+                ecore_thread_main_loop_begin();
                 ecore_timer_del(g_flush_server_recv_buffer_timer);
+                g_flush_server_recv_buffer_timer = NULL;
+                ecore_thread_main_loop_end();
+            }
 
             std::string str = (const char *)in;
             if (CISEMessageSerializer::valid(str)) {
@@ -346,9 +350,13 @@ static int callback_keyboard(struct lws *wsi,
 
             pthread_mutex_lock(&g_ws_server_mutex);
             server_recv_buffer += str;
+            SECURE_LOGD("RECEIVE callback : [%s], [%s]", str.c_str(), server_recv_buffer.c_str());
             pthread_mutex_unlock(&g_ws_server_mutex);
 
+            ecore_thread_main_loop_begin();
             g_flush_server_recv_buffer_timer = ecore_timer_add(0.05, flush_server_recv_buffer_func, (void*)pss);
+            SECURE_LOGD("flush timer registered : %p", g_flush_server_recv_buffer_timer);
+            ecore_thread_main_loop_end();
         }
 
         break;