Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/render/render_opengl.c
| Show First 20 Lines • Show All 853 Lines • ▼ Show 20 Lines | if (is_animation) { | ||||
| if (is_render_keyed_only) { | if (is_render_keyed_only) { | ||||
| gather_frames_to_render(C, oglrender); | gather_frames_to_render(C, oglrender); | ||||
| } | } | ||||
| TaskScheduler *task_scheduler = BLI_task_scheduler_get(); | TaskScheduler *task_scheduler = BLI_task_scheduler_get(); | ||||
| if (BKE_imtype_is_movie(scene->r.im_format.imtype)) { | if (BKE_imtype_is_movie(scene->r.im_format.imtype)) { | ||||
| task_scheduler = BLI_task_scheduler_create(1); | task_scheduler = BLI_task_scheduler_create(1); | ||||
| oglrender->task_scheduler = task_scheduler; | oglrender->task_scheduler = task_scheduler; | ||||
| oglrender->task_pool = BLI_task_pool_create_background(task_scheduler, oglrender); | oglrender->task_pool = BLI_task_pool_create_background( | ||||
| task_scheduler, oglrender, TASK_PRIORITY_LOW); | |||||
| } | } | ||||
| else { | else { | ||||
| oglrender->task_scheduler = NULL; | oglrender->task_scheduler = NULL; | ||||
| oglrender->task_pool = BLI_task_pool_create(task_scheduler, oglrender); | oglrender->task_pool = BLI_task_pool_create(task_scheduler, oglrender, TASK_PRIORITY_LOW); | ||||
| } | } | ||||
| oglrender->pool_ok = true; | oglrender->pool_ok = true; | ||||
| BLI_spin_init(&oglrender->reports_lock); | BLI_spin_init(&oglrender->reports_lock); | ||||
| } | } | ||||
| else { | else { | ||||
| oglrender->task_scheduler = NULL; | oglrender->task_scheduler = NULL; | ||||
| oglrender->task_pool = NULL; | oglrender->task_pool = NULL; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 243 Lines • ▼ Show 20 Lines | static bool schedule_write_result(OGLRender *oglrender, RenderResult *rr) | ||||
| task_data->rr = rr; | task_data->rr = rr; | ||||
| task_data->tmp_scene = *scene; | task_data->tmp_scene = *scene; | ||||
| BLI_mutex_lock(&oglrender->task_mutex); | BLI_mutex_lock(&oglrender->task_mutex); | ||||
| oglrender->num_scheduled_frames++; | oglrender->num_scheduled_frames++; | ||||
| if (oglrender->num_scheduled_frames > MAX_SCHEDULED_FRAMES) { | if (oglrender->num_scheduled_frames > MAX_SCHEDULED_FRAMES) { | ||||
| BLI_condition_wait(&oglrender->task_condition, &oglrender->task_mutex); | BLI_condition_wait(&oglrender->task_condition, &oglrender->task_mutex); | ||||
| } | } | ||||
| BLI_mutex_unlock(&oglrender->task_mutex); | BLI_mutex_unlock(&oglrender->task_mutex); | ||||
| BLI_task_pool_push(oglrender->task_pool, write_result_func, task_data, true, TASK_PRIORITY_LOW); | BLI_task_pool_push(oglrender->task_pool, write_result_func, task_data, true, NULL); | ||||
| return true; | return true; | ||||
| } | } | ||||
| static bool screen_opengl_render_anim_step(bContext *C, wmOperator *op) | static bool screen_opengl_render_anim_step(bContext *C, wmOperator *op) | ||||
| { | { | ||||
| Main *bmain = CTX_data_main(C); | Main *bmain = CTX_data_main(C); | ||||
| OGLRender *oglrender = op->customdata; | OGLRender *oglrender = op->customdata; | ||||
| Scene *scene = oglrender->scene; | Scene *scene = oglrender->scene; | ||||
| ▲ Show 20 Lines • Show All 254 Lines • Show Last 20 Lines | |||||