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:
authorTon Roosendaal <ton@blender.org>2009-01-22 17:59:49 +0300
committerTon Roosendaal <ton@blender.org>2009-01-22 17:59:49 +0300
commit9cc59fb0c329bb788defe9c56b69d0919caaba96 (patch)
treef6f1c48441ba6de4f2ff1faf19a0540ce1dc6ba5 /source/blender/windowmanager/WM_api.h
parenta017982074b3b11fd0157d8d604e02858411db70 (diff)
2.5
Added WM Jobs manager - WM can manage threaded jobs for you; just provide a couple of components to get it work: - customdata, free callback for it - timer step, notifier code - start callback, update callback - Once started, each job runs an own timer, and will for every time step check necessary updates, or close the job when ready. - No drawing happens in jobs, that's for notifiers! - Every job stores an owner pointer, and based on this owner it will prevent multiple jobs to enter the stack. Instead it will re-use a running job, signal it to stop and allow caller to re-initialize it even. - Check new wm_jobs.c for more explanation. Jobs API is still under construction. Fun: BLI_addtail(&wm->jobs, steve); :) Put Node shader previews back using wmJobs - Preview calculating is now fully threaded (1 thread still) - Thanks to new event system + notifiers, you can see previews update even while dragging sliders! - Currently it only starts when you change a node setting. Warning: the thread render shares Node data, so don't delete nodes while it renders! This topic is on the todo to make safe. Also: - bug in region initialize (do_versions) showed channel list in node editor wrong. - flagged the channel list 'hidden' now, it was really in the way! This is for later to work on anyway. - recoded Render API callbacks so it gets handlers passed on, no globals to use anymore, remember? - previewrender code gets now so much nicer! Will remove a lot of stuff from code soon.
Diffstat (limited to 'source/blender/windowmanager/WM_api.h')
-rw-r--r--source/blender/windowmanager/WM_api.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index d7559eac306..13104b58a04 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -36,9 +36,13 @@ struct IDProperty;
struct wmEvent;
struct wmEventHandler;
struct wmGesture;
+struct wmJob;
+struct wmNotifier;
struct rcti;
struct PointerRNA;
+typedef struct wmJob wmJob;
+
/* general API */
void WM_setprefsize (int stax, int stay, int sizx, int sizy);
@@ -168,5 +172,18 @@ void wmOrtho2 (float x1, float x2, float y1, float y2);
void WM_set_framebuffer_index_color(int index);
int WM_framebuffer_to_index(unsigned int col);
+ /* threaded Jobs Manager */
+
+struct wmJob *WM_jobs_get(struct wmWindowManager *wm, struct wmWindow *win, void *owner);
+
+void WM_jobs_customdata(struct wmJob *, void *customdata, void (*free)(void *));
+void WM_jobs_timer(struct wmJob *, double timestep, unsigned int note);
+void WM_jobs_callbacks(struct wmJob *,
+ void (*startjob)(void *, short *, short *),
+ void (*listener)(struct wmJob *, struct wmNotifier *),
+ void (*update)(void *));
+
+void WM_jobs_start(struct wmJob *);
+
#endif /* WM_API_H */