From 863f502ddef38a9a8ce034e649e017fdcf45b013 Mon Sep 17 00:00:00 2001 From: Piotr Krygier Date: Mon, 11 Sep 2023 11:15:25 +0200 Subject: [PATCH] Improve threading --- red_scarf_engine/src/main.c | 3 ++- utilities/rse_task.h | 3 +-- utilities/src/rse_task_linux.c | 6 ++++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/red_scarf_engine/src/main.c b/red_scarf_engine/src/main.c index b1a49570..4a5fa867 100644 --- a/red_scarf_engine/src/main.c +++ b/red_scarf_engine/src/main.c @@ -10,6 +10,7 @@ int main(int argc, char** argv) rse_graphics_init(); rse_create_task(&graphics_task, (thread_worker_t)rse_graphics_run, NULL); + rse_task_join(&graphics_task); - return 0; + rse_task_exit(); //TODO: Figure out why program is so much faster if we don't join the graphics_task. WTF. } diff --git a/utilities/rse_task.h b/utilities/rse_task.h index 615536b8..56077337 100644 --- a/utilities/rse_task.h +++ b/utilities/rse_task.h @@ -23,7 +23,6 @@ typedef void*(*thread_worker_t)(void*); uint8_t rse_create_task(rse_thread_t* thread_id, thread_worker_t callback, void* args); uint8_t rse_task_join(rse_thread_t* thread_id); -void rse_task_delay(void); - +void rse_task_exit(void); #endif /* RSE_THREADS_H */ \ No newline at end of file diff --git a/utilities/src/rse_task_linux.c b/utilities/src/rse_task_linux.c index bfe2a09c..553fccd2 100644 --- a/utilities/src/rse_task_linux.c +++ b/utilities/src/rse_task_linux.c @@ -18,5 +18,7 @@ uint8_t rse_task_join(rse_thread_t* thread_id) return result; //TODO: Do error handling } -void rse_task_delay(void) -{} \ No newline at end of file +void rse_task_exit() +{ + pthread_exit(NULL); +} \ No newline at end of file