Commit: 55cacb2e63e342705e25e205c1b805956a7226bd
Author: Campbell Barton
Date:   Fri Aug 29 16:17:31 2014 +1000
Branches: master
https://developer.blender.org/rB55cacb2e63e342705e25e205c1b805956a7226bd

Add callback for starting a render-job

We had complete/cancel, but no matching init for rendering,
render_pre/post callbacks aren't always usable.

===================================================================

M       source/blender/blenlib/BLI_callbacks.h
M       source/blender/python/intern/bpy_app_handlers.c
M       source/blender/render/intern/source/pipeline.c

===================================================================

diff --git a/source/blender/blenlib/BLI_callbacks.h 
b/source/blender/blenlib/BLI_callbacks.h
index b93cd9e..2f963cf 100644
--- a/source/blender/blenlib/BLI_callbacks.h
+++ b/source/blender/blenlib/BLI_callbacks.h
@@ -29,12 +29,20 @@ struct bContext;
 struct Main;
 struct ID;
 
+/**
+ * Common suffix uses:
+ * - ``_PRE/_POST``:
+ *   For handling discrete non-interactive events.
+ * - ``_INIT/_COMPLETE/_CANCEL``:
+ *   For handling jobs (which may in turn cause other handlers to be called).
+ */
 typedef enum {
        BLI_CB_EVT_FRAME_CHANGE_PRE,
        BLI_CB_EVT_FRAME_CHANGE_POST,
        BLI_CB_EVT_RENDER_PRE,
        BLI_CB_EVT_RENDER_POST,
        BLI_CB_EVT_RENDER_STATS,
+       BLI_CB_EVT_RENDER_INIT,
        BLI_CB_EVT_RENDER_COMPLETE,
        BLI_CB_EVT_RENDER_CANCEL,
        BLI_CB_EVT_LOAD_PRE,
diff --git a/source/blender/python/intern/bpy_app_handlers.c 
b/source/blender/python/intern/bpy_app_handlers.c
index c1d0a0b..41ca2d4 100644
--- a/source/blender/python/intern/bpy_app_handlers.c
+++ b/source/blender/python/intern/bpy_app_handlers.c
@@ -49,6 +49,7 @@ static PyStructSequence_Field app_cb_info_fields[] = {
        {(char *)"render_pre",        (char *)"Callback list - on render 
(before)"},
        {(char *)"render_post",       (char *)"Callback list - on render 
(after)"},
        {(char *)"render_stats",      (char *)"Callback list - on printing 
render statistics"},
+       {(char *)"render_init",       (char *)"Callback list - on 
initialization of a render job"},
        {(char *)"render_complete",   (char *)"Callback list - on completion of 
render job"},
        {(char *)"render_cancel",     (char *)"Callback list - on canceling a 
render job"},
        {(char *)"load_pre",          (char *)"Callback list - on loading a new 
blend file (before)"},
diff --git a/source/blender/render/intern/source/pipeline.c 
b/source/blender/render/intern/source/pipeline.c
index 333f0b7..1b7ce9a 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -2779,6 +2779,8 @@ void RE_SetReports(Render *re, ReportList *reports)
 void RE_BlenderFrame(Render *re, Main *bmain, Scene *scene, SceneRenderLayer 
*srl, Object *camera_override,
                      unsigned int lay_override, int frame, const bool 
write_still)
 {
+       BLI_callback_exec(re->main, (ID *)scene, BLI_CB_EVT_RENDER_INIT);
+
        /* ugly global still... is to prevent preview events and signal 
subsurfs etc to make full resol */
        G.is_rendering = true;
        
@@ -2953,6 +2955,8 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene 
*scene, Object *camera_overri
        int cfrao = scene->r.cfra;
        int nfra, totrendered = 0, totskipped = 0;
        
+       BLI_callback_exec(re->main, (ID *)scene, BLI_CB_EVT_RENDER_INIT);
+
        /* do not fully call for each frame, it initializes & pops output 
window */
        if (!render_initialize_from_main(re, &rd, bmain, scene, NULL, 
camera_override, lay_override, 0, 1))
                return;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to