A 3D game engine from scratch.
1// (c) 2020 Vlad-Stefan Harbuz <vlad@vladh.net>
2
3#pragma once
4
5#include <mutex>
6#include "types.hpp"
7#include "queue.hpp"
8
9class tasks {
10public:
11 typedef void (*TaskFn)(void*);
12 struct Task {
13 TaskFn fn;
14 void *argument_1;
15 };
16 struct State {
17 Queue<Task> task_queue;
18 };
19
20 static void push(Task task);
21 static void run_loading_loop(
22 std::mutex *mutex,
23 bool *should_stop,
24 u32 idx_thread
25 );
26 static void init(tasks::State *tasks_state, memory::Pool *pool);
27
28private:
29 static void run_task(Task *task);
30
31 static tasks::State *state;
32};