28 |
28 |
29 #pragma once |
29 #pragma once |
30 |
30 |
31 #include "../ui/toolkit.h" |
31 #include "../ui/toolkit.h" |
32 |
32 |
|
33 #include <queue> |
|
34 #include <mutex> |
|
35 #include <condition_variable> |
|
36 |
33 typedef struct UiJob { |
37 typedef struct UiJob { |
34 UiObject* obj; |
38 UiObject* obj; |
35 ui_threadfunc job_func; |
39 ui_threadfunc job_func; |
36 void* job_data; |
40 void* job_data; |
37 ui_callback finish_callback; |
41 ui_callback finish_callback; |
38 void* finish_data; |
42 void* finish_data; |
39 } UiJob; |
43 } UiJob; |
|
44 |
|
45 struct UiThreadpool |
|
46 { |
|
47 std::queue<UiJob*> queue; |
|
48 std::mutex mutex; |
|
49 std::condition_variable condition; |
|
50 |
|
51 UiThreadpool(int nthreads); |
|
52 |
|
53 void EnqueueJob(UiJob* job); |
|
54 |
|
55 UiJob* GetJob(); |
|
56 }; |
40 |
57 |
41 typedef void(*ui_eventfunc)(void*, void*); |
58 typedef void(*ui_eventfunc)(void*, void*); |
42 |
59 |
43 void ui_app_run_startup(); |
60 void ui_app_run_startup(); |
44 |
61 |