[#30503] Callback for render job completion
authorCampbell Barton <ideasman42@gmail.com>
Sun, 11 Mar 2012 17:24:03 +0000 (17:24 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 11 Mar 2012 17:24:03 +0000 (17:24 +0000)
from Jason van Gumster (thefallenweeble)

adds render_complete and render_cancel callbacks to bpy.app.handlers

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

index f4f92a0cbeec09fe9592655fff177170a195f5f0..b32a1e272c86d221cf2f77234b9c5f665c1bac7e 100644 (file)
@@ -42,6 +42,8 @@ typedef enum {
        BLI_CB_EVT_RENDER_PRE,
        BLI_CB_EVT_RENDER_POST,
        BLI_CB_EVT_RENDER_STATS,
+       BLI_CB_EVT_RENDER_COMPLETE,
+       BLI_CB_EVT_RENDER_CANCEL,
        BLI_CB_EVT_LOAD_PRE,
        BLI_CB_EVT_LOAD_POST,
        BLI_CB_EVT_SAVE_PRE,
index f4962cd39b6223bfb949c5d8b6a517f3f8c02c22..daa842f0629075933dea21598c96cc15f815e24d 100644 (file)
@@ -47,6 +47,8 @@ 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_complete",   (char *)"Callback list - on completion of render job"},
+       {(char *)"render_cancel",     (char *)"Callback list - on cancelling a render job"},
        {(char *)"load_pre",          (char *)"Callback list - on loading a new blend file (before)"},
        {(char *)"load_post",         (char *)"Callback list - on loading a new blend file (after)"},
        {(char *)"save_pre",          (char *)"Callback list - on saving a blend file (before)"},
index 73305755fc5fd6406715ce5bdbeca09e08403abe..87d557959244ed176517cc98521bf8285adfd6bd 100644 (file)
@@ -2022,6 +2022,8 @@ void RE_BlenderFrame(Render *re, Main *bmain, Scene *scene, SceneRenderLayer *sr
                BLI_exec_cb(re->main, (ID *)scene, BLI_CB_EVT_RENDER_POST); /* keep after file save */
        }
 
+       BLI_exec_cb(re->main, (ID *)scene, G.afbreek ? BLI_CB_EVT_RENDER_CANCEL : BLI_CB_EVT_RENDER_COMPLETE);
+
        /* UGLY WARNING */
        G.rendering= 0;
 }
@@ -2239,6 +2241,8 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_overri
 
        re->flag &= ~R_ANIMATION;
 
+       BLI_exec_cb(re->main, (ID *)scene, G.afbreek ? BLI_CB_EVT_RENDER_CANCEL : BLI_CB_EVT_RENDER_COMPLETE);
+
        /* UGLY WARNING */
        G.rendering= 0;
 }