summaryrefslogtreecommitdiff
path: root/src/logos
diff options
context:
space:
mode:
Diffstat (limited to 'src/logos')
-rw-r--r--src/logos/jobs.h3
-rw-r--r--src/logos/tasks.h60
2 files changed, 60 insertions, 3 deletions
diff --git a/src/logos/jobs.h b/src/logos/jobs.h
deleted file mode 100644
index ef4eed7..0000000
--- a/src/logos/jobs.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/**
- * Common jobs that get run
- */ \ No newline at end of file
diff --git a/src/logos/tasks.h b/src/logos/tasks.h
new file mode 100644
index 0000000..3e6bd06
--- /dev/null
+++ b/src/logos/tasks.h
@@ -0,0 +1,60 @@
+/**
+ * Common jobs that get run
+ */
+#pragma once
+#include "defines.h"
+#include "logos/threadpool.h"
+#include "render_types.h"
+#include "str.h"
+
+typedef struct Task {
+ char* debug_name;
+ void* params;
+ bool is_done;
+} Task;
+
+// Macro : give Params and Result structs and it creates a function that knows
+// correct sizes
+
+typedef struct Task_ModelLoad_Params {
+ Str8 filepath; // filepath to the model on disk
+ } Task_ModelLoad_Params;
+typedef struct Task_ModelLoad_Result {
+ Model model;
+} Task_ModelLoad_Result;
+
+// Internally it will allocate data for each
+
+static bool Task_ModelLoad_Typed(
+ Task_ModelLoad_Params* params,
+ Task_ModelLoad_Result* result,
+ tpool_task_start run_task,
+ tpool_task_on_complete on_success,
+ tpool_task_on_complete on_failure
+) {
+ threadpool_add_task(pool, , tpool_task_on_complete on_success, tpool_task_on_complete on_fail, bool buffer_result_for_main_thread, void *param_data, u32 param_data_size, u32 result_data_size)
+}
+
+// do task
+// success
+void model_load_success(task_globals* globals, void* result) {
+ Task_ModelLoad_Result* load_res = result;
+
+ // push into render -> renderables ?
+}
+// fail
+
+
+// we can define our custom task here that wraps the more verbose function pointers
+static Task Task_ModelLoad(
+ Task_ModelLoad_Params* params,
+ Task_ModelLoad_Result* result
+) {
+ Task task;
+ task.debug_name = "Load Model";
+ task.params = params;
+
+ Task_ModelLoad_Typed(params, result, tpool_task_start run_task, tpool_task_on_complete on_success, tpool_task_on_complete on_failure)
+
+ return task;
+}