165 if (wm_job->owner ==
owner && wm_job->job_type ==
job_type) {
172 if (wm_job->owner ==
owner) {
201 if (wm_job ==
NULL) {
227 if (wm_job->owner ==
owner) {
229 if (wm_job->running || wm_job->suspended) {
252 float total_progress = 0.0f;
253 float jobs_progress = 0;
256 if (wm_job->threads.first && !wm_job->ready) {
260 total_progress += wm_job->progress;
266 if (jobs_progress > 0) {
333 return wm_job ? wm_job->
stop :
true;
386 wmJob *wm_job = job_v;
390 wm_job->
ready =
true;
398 bool suspend =
false;
409 if (wm_job == test || !wm_job->
running) {
441 printf(
"job suspended: %s\n", test->
name);
477 wm_job->
stop =
false;
478 wm_job->
ready =
false;
499 printf(
"job fails, not initialized\n");
544 if (update_progress) {
598 void (*
startjob)(
void *,
short int *,
short int *,
float *))
611 if (wm_job->
wt ==
wt) {
622 if (wm_job->
wt ==
wt) {
656 printf(
"job ready but stopped %s\n", wm_job->
name);
659 printf(
"job finished %s\n", wm_job->
name);
664 printf(
"Job '%s' finished in %f seconds\n",
typedef float(TangentPoint)[2]
void BLI_kdtree_nd_() free(KDTree *tree)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
void BLI_ticket_mutex_unlock(TicketMutex *ticket)
void BLI_thread_put_thread_on_fast_node(void)
void BLI_threadpool_init(struct ListBase *threadbase, void *(*do_thread)(void *), int tot)
void BLI_threadpool_end(struct ListBase *threadbase)
void BLI_ticket_mutex_lock(TicketMutex *ticket)
void BLI_ticket_mutex_free(TicketMutex *ticket)
void BLI_threadpool_insert(struct ListBase *threadbase, void *callerdata)
TicketMutex * BLI_ticket_mutex_alloc(void)
Read Guarded memory(de)allocation.
Platform independent time functions.
void(* wm_jobs_start_callback)(void *custom_data, short *stop, short *do_update, float *progress)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
static void update(bNodeTree *ntree)
void SEQ_prefetch_stop_all(void)
wm_jobs_start_callback startjob
TicketMutex * main_thread_mutex
double PIL_check_seconds_timer(void)
void WM_event_add_notifier_ex(wmWindowManager *wm, const wmWindow *win, uint type, void *reference)
static void wm_job_free(wmWindowManager *wm, wmJob *wm_job)
static void wm_job_main_thread_yield(wmJob *wm_job)
void WM_jobs_kill(wmWindowManager *wm, void *owner, void(*startjob)(void *, short int *, short int *, float *))
void WM_jobs_kill_all_except(wmWindowManager *wm, void *owner)
void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job)
static void wm_jobs_kill_job(wmWindowManager *wm, wmJob *wm_job)
void * WM_jobs_customdata(wmWindowManager *wm, void *owner)
wmJob * WM_jobs_get(wmWindowManager *wm, wmWindow *win, void *owner, const char *name, int flag, int job_type)
void wm_jobs_timer_end(wmWindowManager *wm, wmTimer *wt)
char * WM_jobs_name(wmWindowManager *wm, void *owner)
void * WM_jobs_customdata_from_type(wmWindowManager *wm, int job_type)
static void wm_jobs_test_suspend_stop(wmWindowManager *wm, wmJob *test)
bool WM_jobs_test(wmWindowManager *wm, void *owner, int job_type)
void WM_jobs_kill_all(wmWindowManager *wm)
void WM_jobs_delay_start(wmJob *wm_job, double delay_time)
static wmJob * wm_job_find(wmWindowManager *wm, void *owner, const int job_type)
static void wm_jobs_update_progress_bars(wmWindowManager *wm)
void WM_jobs_callbacks(wmJob *wm_job, wm_jobs_start_callback startjob, void(*initjob)(void *), void(*update)(void *), void(*endjob)(void *))
void wm_jobs_timer(wmWindowManager *wm, wmTimer *wt)
void WM_jobs_kill_type(struct wmWindowManager *wm, void *owner, int job_type)
void * WM_jobs_customdata_get(wmJob *wm_job)
bool WM_jobs_is_stopped(wmWindowManager *wm, void *owner)
bool WM_jobs_is_running(wmJob *wm_job)
void WM_job_main_thread_lock_acquire(wmJob *wm_job)
static void * do_job_thread(void *job_v)
void WM_jobs_customdata_set(wmJob *wm_job, void *customdata, void(*free)(void *))
void WM_jobs_timer(wmJob *wm_job, double timestep, unsigned int note, unsigned int endnote)
void WM_jobs_stop(wmWindowManager *wm, void *owner, void *startjob)
double WM_jobs_starttime(wmWindowManager *wm, void *owner)
void WM_job_main_thread_lock_release(wmJob *wm_job)
float WM_jobs_progress(wmWindowManager *wm, void *owner)
bool WM_jobs_has_running(wmWindowManager *wm)
void WM_event_remove_timer(wmWindowManager *wm, wmWindow *UNUSED(win), wmTimer *timer)
void WM_progress_clear(wmWindow *win)
void WM_progress_set(wmWindow *win, float progress)
wmTimer * WM_event_add_timer(wmWindowManager *wm, wmWindow *win, int event_type, double timestep)