Commit: cade262c472374dc397311dabd900c8763598c70 Author: Thomas Beck Date: Sat Sep 17 00:21:34 2016 +0200 Branches: master https://developer.blender.org/rBcade262c472374dc397311dabd900c8763598c70
OpenGL render: Bugfix (unreported) after rB6f92604e539b2114763150fb1ace60d28e59a889 Crashes occured immediately when clicking on "OpenGL render image" because there was only a task pool created previously when it was an animation. Solved it by introducing a variable is_animation to the openglrender and omitting the task_pool call when it's no animation. @sergey: Please check my changes, moved the pool_ok and the lock into the is_animation clause. =================================================================== M source/blender/editors/render/render_opengl.c =================================================================== diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c index ee2772c..a154791 100644 --- a/source/blender/editors/render/render_opengl.c +++ b/source/blender/editors/render/render_opengl.c @@ -133,6 +133,7 @@ typedef struct OGLRender { TaskPool *task_pool; bool pool_ok; + bool is_animation; SpinLock reports_lock; #ifdef DEBUG_TIME @@ -636,6 +637,7 @@ static bool screen_opengl_render_init(bContext *C, wmOperator *op) oglrender->cfrao = scene->r.cfra; oglrender->write_still = is_write_still && !is_animation; + oglrender->is_animation = is_animation; oglrender->views_len = BKE_scene_multiview_num_views_get(&scene->r); @@ -701,12 +703,12 @@ static bool screen_opengl_render_init(bContext *C, wmOperator *op) oglrender->task_pool = BLI_task_pool_create(task_scheduler, oglrender); } + oglrender->pool_ok = true; + BLI_spin_init(&oglrender->reports_lock); } else { oglrender->task_pool = NULL; } - oglrender->pool_ok = true; - BLI_spin_init(&oglrender->reports_lock); #ifdef DEBUG_TIME oglrender->time_start = PIL_check_seconds_timer(); @@ -721,9 +723,11 @@ static void screen_opengl_render_end(bContext *C, OGLRender *oglrender) Scene *scene = oglrender->scene; int i; - BLI_task_pool_work_and_wait(oglrender->task_pool); - BLI_task_pool_free(oglrender->task_pool); - BLI_spin_end(&oglrender->reports_lock); + if (oglrender->is_animation) { + BLI_task_pool_work_and_wait(oglrender->task_pool); + BLI_task_pool_free(oglrender->task_pool); + BLI_spin_end(&oglrender->reports_lock); + } #ifdef DEBUG_TIME printf("Total render time: %f\n", PIL_check_seconds_timer() - oglrender->time_start); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs