Add a basic logcat thread
This commit is contained in:
parent
585c79c764
commit
2778fb039b
|
@ -0,0 +1,39 @@
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/epoll.h>
|
||||||
|
|
||||||
|
#include "log.h"
|
||||||
|
#include "misc.h"
|
||||||
|
#include "logcat_thread.h"
|
||||||
|
|
||||||
|
#define EPOLL_MAX_EVENTS 10
|
||||||
|
|
||||||
|
LogcatThreadState::LogcatThreadState() {
|
||||||
|
this->epoll_fd = epoll_create1(EPOLL_CLOEXEC);
|
||||||
|
if (this->epoll_fd == -1) {
|
||||||
|
throw make_system_error("epoll_create1()");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LogcatThreadState::~LogcatThreadState() {
|
||||||
|
if (close(this->epoll_fd)) {
|
||||||
|
log(std::string("Failed to close epoll file descriptor: ") + make_system_error("close()").what());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void run_logcat_thread(LogcatThreadState* state) {
|
||||||
|
struct epoll_event events[EPOLL_MAX_EVENTS];
|
||||||
|
|
||||||
|
// TODO break when run_main_loop is false
|
||||||
|
while (true) {
|
||||||
|
printf("(boop)\n");
|
||||||
|
int ready_fds = epoll_wait(state->epoll_fd, events, EPOLL_MAX_EVENTS, 1000);
|
||||||
|
if (ready_fds == -1) {
|
||||||
|
printf("%s\n", format_log(make_system_error("epoll_wait()").what()).c_str());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i=0; i < ready_fds; i++) {
|
||||||
|
printf("ain't no way in hell do we get a ready fd (#%d) when we haven't set up anything\n", i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
struct LogcatThreadState {
|
||||||
|
// https://stackoverflow.com/a/2173764
|
||||||
|
LogcatThreadState(const LogcatThreadState&) = delete;
|
||||||
|
LogcatThreadState& operator=(const LogcatThreadState&) = delete;
|
||||||
|
|
||||||
|
LogcatThreadState();
|
||||||
|
~LogcatThreadState();
|
||||||
|
|
||||||
|
int epoll_fd;
|
||||||
|
};
|
||||||
|
|
||||||
|
void run_logcat_thread(LogcatThreadState* state);
|
5
main.cpp
5
main.cpp
|
@ -1,4 +1,5 @@
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
#include <thread>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
@ -15,6 +16,7 @@
|
||||||
#include "fonts.h"
|
#include "fonts.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "event_loop.h"
|
#include "event_loop.h"
|
||||||
|
#include "logcat_thread.h"
|
||||||
|
|
||||||
int main(int, char**) {
|
int main(int, char**) {
|
||||||
setlocale(LC_TIME, "");
|
setlocale(LC_TIME, "");
|
||||||
|
@ -129,6 +131,8 @@ int main(int, char**) {
|
||||||
// Main loop
|
// Main loop
|
||||||
bool run_event_loop = true;
|
bool run_event_loop = true;
|
||||||
float config_write_timer = 0.0f;
|
float config_write_timer = 0.0f;
|
||||||
|
LogcatThreadState logcat_thread_state;
|
||||||
|
std::thread logcat_thread(run_logcat_thread, &logcat_thread_state);
|
||||||
|
|
||||||
while (run_event_loop) {
|
while (run_event_loop) {
|
||||||
// Poll and handle events (inputs, window resize, etc.)
|
// Poll and handle events (inputs, window resize, etc.)
|
||||||
|
@ -179,6 +183,7 @@ int main(int, char**) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
logcat_thread.join();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue