diff -r 2ad83650d797 -r e3565cf7c831 ui/gtk/toolkit.c --- a/ui/gtk/toolkit.c Sun Apr 07 13:24:26 2024 +0200 +++ b/ui/gtk/toolkit.c Sun Apr 07 21:56:56 2024 +0200 @@ -38,6 +38,7 @@ #include "../common/properties.h" #include "../common/menu.h" #include "../common/toolbar.h" +#include "../common/threadpool.h" #include #include @@ -188,6 +189,23 @@ return NULL; } +static gboolean ui_idle_func(void *data) { + UiJob *job = data; + job->job_func(job->job_data); + free(job); + return FALSE; +} + +void ui_call_mainthread(ui_threadfunc tf, void* td) { + UiJob *job = malloc(sizeof(UiJob)); + job->job_func = tf; + job->job_data = td; + job->finish_callback = NULL; + job->finish_data = NULL; + job->obj = NULL; + g_idle_add(ui_idle_func, job); +} + void ui_job(UiObject *obj, ui_threadfunc tf, void *td, ui_callback f, void *fd) { UiJob *job = malloc(sizeof(UiJob)); job->obj = obj;