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 |
|
37 typedef struct UiJob { |
|
38 UiObject* obj; |
|
39 ui_threadfunc job_func; |
|
40 void* job_data; |
|
41 ui_callback finish_callback; |
|
42 void* finish_data; |
|
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 }; |
|
57 |
33 typedef void(*ui_eventfunc)(void*, void*); |
58 typedef void(*ui_eventfunc)(void*, void*); |
34 |
59 |
35 void ui_app_run_startup(); |
60 void ui_app_run_startup(); |
36 |
61 |
37 extern "C" void destroy_ui_window_wrapper(void* ptr); |
62 extern "C" void destroy_ui_window_wrapper(void* ptr); |