~siretart/ubuntu/utopic/blender/libav10

« back to all changes in this revision

Viewing changes to source/blender/render/intern/source/external_engine.c

  • Committer: Reinhard Tartler
  • Date: 2014-05-31 01:50:05 UTC
  • mfrom: (14.2.27 sid)
  • Revision ID: siretart@tauware.de-20140531015005-ml6druahuj82nsav
mergeĀ fromĀ debian

Show diffs side-by-side

added added

removed removed

Lines of Context:
121
121
        return type;
122
122
}
123
123
 
124
 
int RE_engine_is_external(Render *re)
 
124
bool RE_engine_is_external(Render *re)
125
125
{
126
126
        RenderEngineType *type = RE_engines_find(re->r.engine);
127
127
        return (type && type->render);
213
213
        if (result) {
214
214
                RenderPart *pa;
215
215
 
 
216
                /* Copy EXR tile settings, so pipeline knows whether this is a result
 
217
                 * for Save Buffers enabled rendering.
 
218
                 */
 
219
                result->do_exr_tile = re->result->do_exr_tile;
 
220
 
216
221
                BLI_addtail(&engine->fullresult, result);
217
222
 
218
223
                result->tilerect.xmin += re->disprect.xmin;
235
240
 
236
241
        if (result) {
237
242
                result->renlay = result->layers.first; /* weak, draws first layer always */
238
 
                re->display_draw(re->ddh, result, NULL);
 
243
                re->display_update(re->duh, result, NULL);
239
244
        }
240
245
}
241
246
 
242
 
void RE_engine_end_result(RenderEngine *engine, RenderResult *result, int cancel)
 
247
void RE_engine_end_result(RenderEngine *engine, RenderResult *result, int cancel, int merge_results)
243
248
{
244
249
        Render *re = engine->re;
245
250
 
260
265
                         * buffers, we are going to get openexr save errors */
261
266
                        fprintf(stderr, "RenderEngine.end_result: dimensions do not match any OpenEXR tile.\n");
262
267
                }
 
268
        }
263
269
 
264
 
                if (re->result->do_exr_tile)
265
 
                        render_result_exr_file_merge(re->result, result);
 
270
        if (!cancel || merge_results) {
 
271
                if (re->result->do_exr_tile) {
 
272
                        if (!cancel) {
 
273
                                render_result_exr_file_merge(re->result, result);
 
274
                        }
 
275
                }
266
276
                else if (!(re->test_break(re->tbh) && (re->r.scemode & R_BUTS_PREVIEW)))
267
277
                        render_result_merge(re->result, result);
268
278
 
269
279
                /* draw */
270
280
                if (!re->test_break(re->tbh)) {
271
281
                        result->renlay = result->layers.first; /* weak, draws first layer always */
272
 
                        re->display_draw(re->ddh, result, NULL);
 
282
                        re->display_update(re->duh, result, NULL);
273
283
                }
274
284
        }
275
285
 
421
431
        if (!do_all && (type->flag & RE_USE_POSTPROCESS))
422
432
                return 0;
423
433
 
 
434
        /* Lock drawing in UI during data phase. */
 
435
        if (re->draw_lock) {
 
436
                re->draw_lock(re->dlh, 1);
 
437
        }
 
438
 
424
439
        /* update animation here so any render layer animation is applied before
425
440
         * creating the render result */
426
441
        if ((re->r.scemode & (R_NO_FRAME_UPDATE | R_BUTS_PREVIEW)) == 0) {
457
472
                        lay &= non_excluded_lay;
458
473
                }
459
474
 
460
 
                BKE_scene_update_for_newframe(re->main, re->scene, lay);
 
475
                BKE_scene_update_for_newframe(re->eval_ctx, re->main, re->scene, lay);
461
476
        }
462
477
 
463
478
        /* create render result */
474
489
        }
475
490
        BLI_rw_mutex_unlock(&re->resultmutex);
476
491
 
477
 
        if (re->result == NULL)
 
492
        if (re->result == NULL) {
 
493
                /* Clear UI drawing locks. */
 
494
                if (re->draw_lock) {
 
495
                        re->draw_lock(re->dlh, 0);
 
496
                }
478
497
                return 1;
 
498
        }
479
499
 
480
500
        /* set render info */
481
501
        re->i.cfra = re->scene->r.cfra;
513
533
 
514
534
        if (type->update)
515
535
                type->update(engine, re->main, re->scene);
516
 
        
 
536
 
 
537
        /* Clear UI drawing locks. */
 
538
        if (re->draw_lock) {
 
539
                re->draw_lock(re->dlh, 0);
 
540
        }
 
541
 
517
542
        if (type->render)
518
543
                type->render(engine, re->scene);
519
544