--- a/ui/winui/toolkit.h Sun Jan 28 19:33:56 2024 +0100 +++ b/ui/winui/toolkit.h Sun Jan 28 20:46:49 2024 +0100 @@ -30,6 +30,10 @@ #include "../ui/toolkit.h" +#include <queue> +#include <mutex> +#include <condition_variable> + typedef struct UiJob { UiObject* obj; ui_threadfunc job_func; @@ -38,6 +42,19 @@ void* finish_data; } UiJob; +struct UiThreadpool +{ + std::queue<UiJob*> queue; + std::mutex mutex; + std::condition_variable condition; + + UiThreadpool(int nthreads); + + void EnqueueJob(UiJob* job); + + UiJob* GetJob(); +}; + typedef void(*ui_eventfunc)(void*, void*); void ui_app_run_startup();