Remove the redundant thread loop 47/11447/8
authorzheng_wenlong <wenlong_zheng@nexty-ele.com>
Mon, 23 Oct 2017 05:42:50 +0000 (14:42 +0900)
committerZheng Wenlong <wenlong_zheng@nexty-ele.com>
Mon, 30 Oct 2017 04:21:39 +0000 (04:21 +0000)
    Because libhomescreen already has a thread to receive events,
    we can remove the thread loop in libhomescreen.
    Related Commit:
        https://gerrit.automotivelinux.org/gerrit/#/c/11403/

BUG-AGL: SPEC-989
Change-Id: I32d65efcf32f3395719837339659ff94b3e64889
Signed-off-by: zheng_wenlong <wenlong_zheng@nexty-ele.com>
include/libhomescreen.hpp
sample/template/main.cpp
src/libhomescreen.cpp

index 06e9ad8..5720368 100644 (file)
@@ -35,26 +35,26 @@ public:
     LibHomeScreen();
     ~LibHomeScreen();
 
-               LibHomeScreen(const LibHomeScreen &) = delete;
-               LibHomeScreen &operator=(const LibHomeScreen &) = delete;
+    LibHomeScreen(const LibHomeScreen &) = delete;
+    LibHomeScreen &operator=(const LibHomeScreen &) = delete;
 
-               using handler_func = std::function<void(const char*)>;
+    using handler_func = std::function<void(const char*)>;
 
-               enum EventType {
-                       Event_TapShortcut = 1,
-                       Event_OnScreenMessage
-               };
+    enum EventType {
+        Event_TapShortcut = 1,
+        Event_OnScreenMessage
+    };
 
-               static const std::vector<std::string> api_list;
-               static const std::vector<std::string> event_list;
+    static const std::vector<std::string> api_list;
+    static const std::vector<std::string> event_list;
 
     /* Method */
-               int init(const int port, const std::string& token);
+    int init(const int port, const std::string& token);
 
-               int tapShortcut(const char* application_name);
-               int onScreenMessage(const char* display_message);
+    int tapShortcut(const char* application_name);
+    int onScreenMessage(const char* display_message);
 
-               void set_event_handler(enum EventType et, handler_func f);
+    void set_event_handler(enum EventType et, handler_func f);
 
     void registerCallback(
         void (*event_cb)(const std::string& event, struct json_object* event_contents),
@@ -68,8 +68,7 @@ public:
 
 private:
     int initialize_websocket();
-    int runEventloop();
-    
+
     void (*onEvent)(const std::string& event, struct json_object* event_contents);
     void (*onReply)(struct json_object* reply);
     void (*onHangup)(void);
@@ -82,7 +81,7 @@ private:
     int mport = 2000;
     std::string mtoken = "hs";
 
-               std::map<EventType, handler_func> handlers;
+    std::map<EventType, handler_func> handlers;
 
 public:
     /* Don't use/ Internal only */
index ccbe935..589d314 100644 (file)
@@ -135,10 +135,6 @@ int main(int argc, char *argv[])
             }
         });
 
-        // Run event loop for HomeScreen
-        hs->runEventloop();
-
-
         /*
          * Set SoundManager
          */
@@ -148,7 +144,6 @@ int main(int argc, char *argv[])
         smw->subscribe(QString("removedMainConnection"));
         smw->subscribe(QString("asyncSetSourceState"));
         smw->subscribe(QString("asyncConnect"));
-        smw->run_eventloop();
 
         // Set context property for SoundManager
         context->setContextProperty("smw", smw);
index 90ecec2..42ab8b1 100644 (file)
@@ -18,7 +18,6 @@
 #include <sys/socket.h>
 #include <iostream>
 #include <algorithm>
-#include <thread>
 #include <errno.h>
 #include <cassert>
 #include <cctype>
@@ -80,7 +79,6 @@ static void _on_reply_static(void *closure, struct afb_wsj1_msg *msg)
  */
 LibHomeScreen::LibHomeScreen()
 {
-
 }
 
 /**
@@ -134,8 +132,6 @@ int LibHomeScreen::init(const int port, const string& token)
                HMI_DEBUG("libhomescreen","Initialized");
        }
 
-       this->runEventloop();
-
        return ret;
 }
 
@@ -199,47 +195,6 @@ END:
        return -1;
 }
 
-static void *event_loop_run(void *args)
-{
-       struct sd_event* loop = (struct sd_event*)(args);
-       HMI_DEBUG("libhomescreen","start eventloop");
-       for(;;)
-               sd_event_run(loop, 30000000);
-}
-
-/**
- * This function start receiving the reply/event message from home screen
- *
- * #### Parameters
- * Nothing
- *
- * #### Return
- * - Returns thread_id on success or -1 in case of error.
- *
- * #### Note
- *
- */
-int LibHomeScreen::runEventloop()
-{
-       if(mploop && sp_websock)
-       {
-               pthread_t thread_id;
-           int ret = pthread_create(&thread_id, NULL, event_loop_run, mploop);
-               if(ret != 0)
-               {
-                       HMI_ERROR("libhomescreen","Cannot run eventloop due to error:%d", errno);
-                       return -1;
-               }
-               else
-                       return thread_id;
-       }
-       else
-       {
-               HMI_ERROR("libhomescreen","Connecting is not established yet");
-               return -1;
-       }
-}
-
 /**
  * Sending ShortCut Icon tapped event
  *