diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-08-15 13:42:06 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-08-15 13:42:06 +0400 |
commit | 97859e870902305642783a705e1b12f19a2aaf76 (patch) | |
tree | 1ed07607300fd60bd1ed9af9930ad7cb933e7b2d /source/blender/windowmanager/intern | |
parent | b174610a8461348a82454f9050bc0dee7d9ce926 (diff) |
add wm job types they are not used yet, so this just defines them for new jobs add add argument to search by job type.
Diffstat (limited to 'source/blender/windowmanager/intern')
-rw-r--r-- | source/blender/windowmanager/intern/wm_jobs.c | 22 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 2 |
2 files changed, 15 insertions, 9 deletions
diff --git a/source/blender/windowmanager/intern/wm_jobs.c b/source/blender/windowmanager/intern/wm_jobs.c index ce0c7e13454..feca042d2a6 100644 --- a/source/blender/windowmanager/intern/wm_jobs.c +++ b/source/blender/windowmanager/intern/wm_jobs.c @@ -114,7 +114,7 @@ struct wmJob { /* internal */ void *owner; int flag; - short suspended, running, ready, do_update, stop; + short suspended, running, ready, do_update, stop, job_type; float progress; /* for display in header, identification */ @@ -153,7 +153,7 @@ static wmJob *wm_job_find(wmWindowManager *wm, void *owner, const char *name) /* returns current or adds new job, but doesnt run it */ /* every owner only gets a single job, adding a new one will stop running stop and * when stopped it starts the new one */ -wmJob *WM_jobs_get(wmWindowManager *wm, wmWindow *win, void *owner, const char *name, int flag) +wmJob *WM_jobs_get(wmWindowManager *wm, wmWindow *win, void *owner, const char *name, int flag, int job_type) { wmJob *steve = wm_job_find(wm, owner, name); @@ -164,6 +164,7 @@ wmJob *WM_jobs_get(wmWindowManager *wm, wmWindow *win, void *owner, const char * steve->win = win; steve->owner = owner; steve->flag = flag; + steve->job_type = job_type; BLI_strncpy(steve->name, name, sizeof(steve->name)); } @@ -171,17 +172,22 @@ wmJob *WM_jobs_get(wmWindowManager *wm, wmWindow *win, void *owner, const char * } /* returns true if job runs, for UI (progress) indicators */ -int WM_jobs_test(wmWindowManager *wm, void *owner) +int WM_jobs_test(wmWindowManager *wm, void *owner, int job_type) { wmJob *steve; /* job can be running or about to run (suspended) */ - for (steve = wm->jobs.first; steve; steve = steve->next) - if (steve->owner == owner) - if (steve->running || steve->suspended) - return 1; + for (steve = wm->jobs.first; steve; steve = steve->next) { + if (steve->owner == owner) { + if (job_type == WM_JOB_TYPE_ANY || (steve->job_type == job_type)) { + if (steve->running || steve->suspended) { + return TRUE; + } + } + } + } - return 0; + return FALSE; } float WM_jobs_progress(wmWindowManager *wm, void *owner) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 59e0614b18a..a2812d34e61 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -965,7 +965,7 @@ int WM_operator_check_ui_enabled(const bContext *C, const char *idname) wmWindowManager *wm = CTX_wm_manager(C); Scene *scene = CTX_data_scene(C); - return !(ED_undo_valid(C, idname) == 0 || WM_jobs_test(wm, scene)); + return !(ED_undo_valid(C, idname) == 0 || WM_jobs_test(wm, scene, WM_JOB_TYPE_ANY)); } wmOperator *WM_operator_last_redo(const bContext *C) |