Merging r49463 through r49478 from trunk into soc-2011-tomato
[blender.git] / source / blender / editors / render / render_internal.c
index 9309e3e5ac5a73c2e4098c640fc96828ed05b998..d450cb58adf0f868d7227901b3504c7db3ec5fc9 100644 (file)
@@ -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;
        }
 
@@ -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);