Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-11-28 13:36:23 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-11-28 13:36:23 +0400
commitb91cf6096275acc97a7df7840f745f2d262f054f (patch)
treead612adb5a938d5cdadcb185ef4638a999740a2a /source/blender/windowmanager
parent25b7d354846d1576979b42db1e26c1da927feea6 (diff)
Fix #33330: Proxies are not built in Sequencer if preview is visible
Was own regression when was solving conflict between sequencer preview and compositor jobs. Made it so now only compositor jobs are being killed from sequencer preview.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r--source/blender/windowmanager/WM_api.h5
-rw-r--r--source/blender/windowmanager/intern/wm_jobs.c12
2 files changed, 15 insertions, 2 deletions
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index e35e3edfa33..1037542759f 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -360,8 +360,9 @@ void WM_jobs_start(struct wmWindowManager *wm, struct wmJob *);
void WM_jobs_stop(struct wmWindowManager *wm, void *owner, void *startjob);
void WM_jobs_kill(struct wmWindowManager *wm, void *owner, void (*)(void *, short int *, short int *, float *));
void WM_jobs_kill_all(struct wmWindowManager *wm);
- void WM_jobs_kill_all_except(struct wmWindowManager *wm, void *owner);
-
+void WM_jobs_kill_all_except(struct wmWindowManager *wm, void *owner);
+void WM_jobs_kill_type(struct wmWindowManager *wm, int job_type);
+
int WM_jobs_has_running(struct wmWindowManager *wm);
/* clipboard */
diff --git a/source/blender/windowmanager/intern/wm_jobs.c b/source/blender/windowmanager/intern/wm_jobs.c
index 7481c01d72b..3c3e2c0feaa 100644
--- a/source/blender/windowmanager/intern/wm_jobs.c
+++ b/source/blender/windowmanager/intern/wm_jobs.c
@@ -416,6 +416,18 @@ void WM_jobs_kill_all_except(wmWindowManager *wm, void *owner)
}
+void WM_jobs_kill_type(struct wmWindowManager *wm, int job_type)
+{
+ wmJob *wm_job, *next_job;
+
+ for (wm_job = wm->jobs.first; wm_job; wm_job = next_job) {
+ next_job = wm_job->next;
+
+ if (wm_job->job_type == job_type)
+ wm_jobs_kill_job(wm, wm_job);
+ }
+}
+
/* signal job(s) from this owner or callback to stop, timer is required to get handled */
void WM_jobs_stop(wmWindowManager *wm, void *owner, void *startjob)
{