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 <thread> | ||||
| #include <locale.h> | ||||
| #include <sys/stat.h> | ||||
| 
 | ||||
|  | @ -15,6 +16,7 @@ | |||
| #include "fonts.h" | ||||
| #include "config.h" | ||||
| #include "event_loop.h" | ||||
| #include "logcat_thread.h" | ||||
| 
 | ||||
| int main(int, char**) { | ||||
|     setlocale(LC_TIME, ""); | ||||
|  | @ -129,6 +131,8 @@ int main(int, char**) { | |||
|     // Main loop
 | ||||
|     bool run_event_loop = true; | ||||
|     float config_write_timer = 0.0f; | ||||
|     LogcatThreadState logcat_thread_state; | ||||
|     std::thread logcat_thread(run_logcat_thread, &logcat_thread_state); | ||||
| 
 | ||||
|     while (run_event_loop) { | ||||
|         // Poll and handle events (inputs, window resize, etc.)
 | ||||
|  | @ -179,6 +183,7 @@ int main(int, char**) { | |||
|             return 1; | ||||
|         } | ||||
|     } | ||||
|     logcat_thread.join(); | ||||
| 
 | ||||
|     return 0; | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue