36 #include "image.h" |
36 #include "image.h" |
37 #include "../common/document.h" |
37 #include "../common/document.h" |
38 #include "../common/properties.h" |
38 #include "../common/properties.h" |
39 #include "../common/menu.h" |
39 #include "../common/menu.h" |
40 #include "../common/toolbar.h" |
40 #include "../common/toolbar.h" |
|
41 #include "../common/threadpool.h" |
41 |
42 |
42 #include <cx/utils.h> |
43 #include <cx/utils.h> |
43 #include <cx/string.h> |
44 #include <cx/string.h> |
44 #include <cx/printf.h> |
45 #include <cx/printf.h> |
45 |
46 |
184 int result = job->job_func(job->job_data); |
185 int result = job->job_func(job->job_data); |
185 if(!result) { |
186 if(!result) { |
186 g_idle_add(ui_job_finished, job); |
187 g_idle_add(ui_job_finished, job); |
187 } |
188 } |
188 return NULL; |
189 return NULL; |
|
190 } |
|
191 |
|
192 static gboolean ui_idle_func(void *data) { |
|
193 UiJob *job = data; |
|
194 job->job_func(job->job_data); |
|
195 free(job); |
|
196 return FALSE; |
|
197 } |
|
198 |
|
199 void ui_call_mainthread(ui_threadfunc tf, void* td) { |
|
200 UiJob *job = malloc(sizeof(UiJob)); |
|
201 job->job_func = tf; |
|
202 job->job_data = td; |
|
203 job->finish_callback = NULL; |
|
204 job->finish_data = NULL; |
|
205 job->obj = NULL; |
|
206 g_idle_add(ui_idle_func, job); |
189 } |
207 } |
190 |
208 |
191 void ui_job(UiObject *obj, ui_threadfunc tf, void *td, ui_callback f, void *fd) { |
209 void ui_job(UiObject *obj, ui_threadfunc tf, void *td, ui_callback f, void *fd) { |
192 UiJob *job = malloc(sizeof(UiJob)); |
210 UiJob *job = malloc(sizeof(UiJob)); |
193 job->obj = obj; |
211 job->obj = obj; |