Merging r49681 through r49707 from trunk into soc-2011-tomato
[blender.git] / source / blender / editors / render / render_internal.c
index 3d867bd85a5193045fdd4786550fcd1906ae556f..87d2c79d28faefbebb70b8a501e19dc66304a863 100644 (file)
@@ -153,7 +153,7 @@ void image_buffer_rect_update(Scene *scene, RenderResult *rr, ImBuf *ibuf, volat
                                   xmax, ymax, ibuf->x, rr->rectx);
 
        IMB_partial_display_buffer_update(ibuf, rectf, rr->rectx, rxmin, rymin,
-                                         rxmin, rymin, rxmin + xmax - 1, rymin + ymax - 1);
+                                         rxmin, rymin, rxmin + xmax, rymin + ymax);
 }
 
 /* ****************************** render invoking ***************** */
@@ -228,7 +228,7 @@ static int screen_render_exec(bContext *C, wmOperator *op)
         * otherwise, invalidated cache entries can make their way into
         * the output rendering. We can't put that into RE_BlenderFrame,
         * since sequence rendering can call that recursively... (peter) */
-       seq_stripelem_cache_cleanup();
+       BKE_sequencer_cache_cleanup();
 
        RE_SetReports(re, op->reports);
 
@@ -456,10 +456,12 @@ static void render_drawlock(void *UNUSED(rjv), int lock)
 }
 
 /* catch esc */
-static int screen_render_modal(bContext *C, wmOperator *UNUSED(op), wmEvent *event)
+static int screen_render_modal(bContext *C, wmOperator *op, wmEvent *event)
 {
+       Scene *scene = (Scene *) op->customdata;
+
        /* no running blender, remove handler and pass through */
-       if (0 == WM_jobs_test(CTX_wm_manager(C), CTX_data_scene(C))) {
+       if (0 == WM_jobs_test(CTX_wm_manager(C), scene)) {
                return OPERATOR_FINISHED | OPERATOR_PASS_THROUGH;
        }
 
@@ -528,7 +530,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
         * otherwise, invalidated cache entries can make their way into
         * the output rendering. We can't put that into RE_BlenderFrame,
         * since sequence rendering can call that recursively... (peter) */
-       seq_stripelem_cache_cleanup();
+       BKE_sequencer_cache_cleanup();
 
        /* get editmode results */
        ED_object_exit_editmode(C, 0);  /* 0 = does not exit editmode */
@@ -588,6 +590,12 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
        rj->re = re;
        G.afbreek = 0;
 
+       /* store actual owner of job, so modal operator could check for it,
+        * the reason of this is that active scene could change when rendering
+        * several layers from composistor [#31800]
+        */
+       op->customdata = scene;
+
        WM_jobs_start(CTX_wm_manager(C), steve);
 
        WM_cursor_wait(0);