Stop logcat thread when the event loop is stopped
This commit is contained in:
parent
ace07768ee
commit
708fc3b16a
|
@ -7,12 +7,12 @@
|
||||||
|
|
||||||
#define EPOLL_MAX_EVENTS 10
|
#define EPOLL_MAX_EVENTS 10
|
||||||
|
|
||||||
LogcatThread::LogcatThread() {
|
LogcatThread::LogcatThread(bool* run_event_loop) {
|
||||||
this->_epoll_fd = epoll_create1(EPOLL_CLOEXEC);
|
this->_epoll_fd = epoll_create1(EPOLL_CLOEXEC);
|
||||||
if (this->_epoll_fd == -1) {
|
if (this->_epoll_fd == -1) {
|
||||||
throw make_system_error("epoll_create1()");
|
throw make_system_error("epoll_create1()");
|
||||||
}
|
}
|
||||||
this->_thread = std::thread(&LogcatThread::_run, this);
|
this->_thread = std::thread(&LogcatThread::_run, this, run_event_loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
LogcatThread::~LogcatThread() {
|
LogcatThread::~LogcatThread() {
|
||||||
|
@ -25,11 +25,10 @@ void LogcatThread::join() {
|
||||||
this->_thread.join();
|
this->_thread.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogcatThread::_run() {
|
void LogcatThread::_run(bool* run_event_loop) {
|
||||||
struct epoll_event events[EPOLL_MAX_EVENTS];
|
struct epoll_event events[EPOLL_MAX_EVENTS];
|
||||||
|
|
||||||
// TODO break when run_main_loop is false
|
while (*run_event_loop) {
|
||||||
while (true) {
|
|
||||||
printf("(boop)\n");
|
printf("(boop)\n");
|
||||||
int ready_fds = epoll_wait(this->_epoll_fd, events, EPOLL_MAX_EVENTS, 1000);
|
int ready_fds = epoll_wait(this->_epoll_fd, events, EPOLL_MAX_EVENTS, 1000);
|
||||||
if (ready_fds == -1) {
|
if (ready_fds == -1) {
|
||||||
|
|
|
@ -8,12 +8,12 @@ public:
|
||||||
LogcatThread(const LogcatThread&) = delete;
|
LogcatThread(const LogcatThread&) = delete;
|
||||||
LogcatThread& operator=(const LogcatThread&) = delete;
|
LogcatThread& operator=(const LogcatThread&) = delete;
|
||||||
|
|
||||||
LogcatThread();
|
LogcatThread(bool* run_event_loop);
|
||||||
~LogcatThread();
|
~LogcatThread();
|
||||||
void join();
|
void join();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void _run();
|
void _run(bool* run_event_loop);
|
||||||
|
|
||||||
int _epoll_fd = -1;
|
int _epoll_fd = -1;
|
||||||
std::thread _thread;
|
std::thread _thread;
|
||||||
|
|
2
main.cpp
2
main.cpp
|
@ -133,7 +133,7 @@ int main(int, char**) {
|
||||||
float config_write_timer = 0.0f;
|
float config_write_timer = 0.0f;
|
||||||
LogcatThread logcat_thread = [&]() {
|
LogcatThread logcat_thread = [&]() {
|
||||||
try {
|
try {
|
||||||
return LogcatThread();
|
return LogcatThread(&run_event_loop);
|
||||||
} catch (const std::exception& e) {
|
} catch (const std::exception& e) {
|
||||||
fprintf(stderr, "Failed to spawn logcat thread: %s\n", e.what());
|
fprintf(stderr, "Failed to spawn logcat thread: %s\n", e.what());
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
Loading…
Reference in New Issue