Fix #34004: crash when canceling ongoing render with scene strip

Issue was caused by recursive call of RE_BlenderFrame. Solved by
reshuffling image pool init/free in do_render_all_options.

Should be harmless, but doublecheck on this is welcome.
This commit is contained in:
Sergey Sharybin
2013-01-28 13:29:10 +00:00
parent 2a144f0304
commit cc96196f10

View File

@@ -1787,8 +1787,6 @@ static void do_render_all_options(Render *re)
/* ensure no images are in memory from previous animated sequences */ /* ensure no images are in memory from previous animated sequences */
BKE_image_all_free_anim_ibufs(re->r.cfra); BKE_image_all_free_anim_ibufs(re->r.cfra);
re->pool = BKE_image_pool_new();
if (RE_engine_render(re, 1)) { if (RE_engine_render(re, 1)) {
/* in this case external render overrides all */ /* in this case external render overrides all */
} }
@@ -1801,7 +1799,12 @@ static void do_render_all_options(Render *re)
re->display_draw(re->ddh, re->result, NULL); re->display_draw(re->ddh, re->result, NULL);
} }
else { else {
re->pool = BKE_image_pool_new();
do_render_composite_fields_blur_3d(re); do_render_composite_fields_blur_3d(re);
BKE_image_pool_free(re->pool);
re->pool = NULL;
} }
re->i.lastframetime = PIL_check_seconds_timer() - re->i.starttime; re->i.lastframetime = PIL_check_seconds_timer() - re->i.starttime;
@@ -1813,9 +1816,6 @@ static void do_render_all_options(Render *re)
renderresult_stampinfo(re); renderresult_stampinfo(re);
re->display_draw(re->ddh, re->result, NULL); re->display_draw(re->ddh, re->result, NULL);
} }
BKE_image_pool_free(re->pool);
re->pool = NULL;
} }
static int check_valid_camera(Scene *scene, Object *camera_override) static int check_valid_camera(Scene *scene, Object *camera_override)