aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzheng_wenlong <wenlong_zheng@nexty-ele.com>2017-10-23 14:42:50 +0900
committerZheng Wenlong <wenlong_zheng@nexty-ele.com>2017-10-30 04:21:39 +0000
commit06a2777ce769346ba85aee9f38ccb237a2d72915 (patch)
treed6fffd3399b155ee6cd8c7801a58e19427741722
parent46f7c260dd5e79116e7c6571cacbda1b89495c9e (diff)
Remove the redundant thread loop
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>
-rw-r--r--include/libhomescreen.hpp31
-rw-r--r--sample/template/main.cpp5
-rw-r--r--src/libhomescreen.cpp45
3 files changed, 15 insertions, 66 deletions
diff --git a/include/libhomescreen.hpp b/include/libhomescreen.hpp
index 06e9ad8..5720368 100644
--- a/include/libhomescreen.hpp
+++ b/include/libhomescreen.hpp
@@ -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 */
diff --git a/sample/template/main.cpp b/sample/template/main.cpp
index ccbe935..589d314 100644
--- a/sample/template/main.cpp
+++ b/sample/template/main.cpp
@@ -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);
diff --git a/src/libhomescreen.cpp b/src/libhomescreen.cpp
index 90ecec2..42ab8b1 100644
--- a/src/libhomescreen.cpp
+++ b/src/libhomescreen.cpp
@@ -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
*