Commit: 54c6a9fd49bf2bdd9de8775b615c174aa55c40cd
Author: Sergey Sharybin
Date:   Tue Nov 18 15:51:31 2014 +0100
Branches: master
https://developer.blender.org/rB54c6a9fd49bf2bdd9de8775b615c174aa55c40cd

Make it possible to use preview/viewport render job kill without context

===================================================================

M       source/blender/editors/include/ED_render.h
M       source/blender/editors/render/render_internal.c
M       source/blender/editors/render/render_preview.c
M       source/blender/editors/space_image/image_ops.c
M       source/blender/editors/space_node/node_add.c
M       source/blender/editors/space_node/node_edit.c
M       source/blender/editors/space_node/node_group.c
M       source/blender/editors/space_node/node_relationships.c
M       source/blender/editors/util/undo.c

===================================================================

diff --git a/source/blender/editors/include/ED_render.h 
b/source/blender/editors/include/ED_render.h
index ab1dbab..0227ae3 100644
--- a/source/blender/editors/include/ED_render.h
+++ b/source/blender/editors/include/ED_render.h
@@ -40,6 +40,7 @@ struct ScrArea;
 struct RegionView3D;
 struct RenderEngine;
 struct View3D;
+struct wmWindowManager;
 
 /* render_ops.c */
 
@@ -52,7 +53,7 @@ void ED_render_engine_changed(struct Main *bmain);
 void ED_render_engine_area_exit(struct ScrArea *sa);
 void ED_render_scene_update(struct Main *bmain, struct Scene *scene, int 
updated);
 
-void ED_viewport_render_kill_jobs(const struct bContext *C, bool 
free_database);
+void ED_viewport_render_kill_jobs(struct wmWindowManager *wm, struct Main 
*bmain, bool free_database);
 struct Scene *ED_render_job_get_scene(const struct bContext *C);
 
 /* Render the preview
@@ -72,7 +73,7 @@ void ED_preview_free_dbase(void);
 
 void ED_preview_shader_job(const struct bContext *C, void *owner, struct ID 
*id, struct ID *parent, struct MTex *slot, int sizex, int sizey, int method);
 void ED_preview_icon_job(const struct bContext *C, void *owner, struct ID *id, 
unsigned int *rect, int sizex, int sizey);
-void ED_preview_kill_jobs(const struct bContext *C);
+void ED_preview_kill_jobs(struct wmWindowManager *wm, struct Main *bmain);
 
 void ED_preview_draw(const struct bContext *C, void *idp, void *parentp, void 
*slot, rcti *rect);
 
diff --git a/source/blender/editors/render/render_internal.c 
b/source/blender/editors/render/render_internal.c
index baf25a4..b572851 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -1551,10 +1551,10 @@ void render_view3d_draw(RenderEngine *engine, const 
bContext *C)
        RE_ReleaseResultImage(re);
 }
 
-void ED_viewport_render_kill_jobs(const bContext *C, bool free_database)
+void ED_viewport_render_kill_jobs(wmWindowManager *wm,
+                                  Main *bmain,
+                                  bool free_database)
 {
-       wmWindowManager *wm = CTX_wm_manager(C);
-       Main *bmain = CTX_data_main(C);
        bScreen *sc;
        ScrArea *sa;
        ARegion *ar;
diff --git a/source/blender/editors/render/render_preview.c 
b/source/blender/editors/render/render_preview.c
index 2a0ec85..47f7b6f 100644
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@ -1180,12 +1180,11 @@ void ED_preview_shader_job(const bContext *C, void 
*owner, ID *id, ID *parent, M
        WM_jobs_start(CTX_wm_manager(C), wm_job);
 }
 
-void ED_preview_kill_jobs(const struct bContext *C)
+void ED_preview_kill_jobs(wmWindowManager *wm, Main *bmain)
 {
-       wmWindowManager *wm = CTX_wm_manager(C);
        if (wm)
                WM_jobs_kill(wm, NULL, common_preview_startjob);
-       
-       ED_viewport_render_kill_jobs(C, false);
+
+       ED_viewport_render_kill_jobs(wm, bmain, false);
 }
 
diff --git a/source/blender/editors/space_image/image_ops.c 
b/source/blender/editors/space_image/image_ops.c
index 836ff25..2a03dc6 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -1127,7 +1127,7 @@ static int image_open_exec(bContext *C, wmOperator *op)
        }
 
        /* XXX unpackImage frees image buffers */
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), bmain);
        
        BKE_image_signal(ima, iuser, IMA_SIGNAL_RELOAD);
        WM_event_add_notifier(C, NC_IMAGE | NA_EDITED, ima);
@@ -1279,7 +1279,7 @@ static int image_replace_exec(bContext *C, wmOperator *op)
                sima->image->source = IMA_SRC_FILE;
 
        /* XXX unpackImage frees image buffers */
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
        
        BKE_icon_changed(BKE_icon_getid(&sima->image->id));
        BKE_image_signal(sima->image, &sima->iuser, IMA_SIGNAL_RELOAD);
@@ -1880,7 +1880,7 @@ static int image_reload_exec(bContext *C, wmOperator 
*UNUSED(op))
                return OPERATOR_CANCELLED;
 
        /* XXX unpackImage frees image buffers */
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
        
        // XXX other users?
        BKE_image_signal(ima, (sima) ? &sima->iuser : NULL, IMA_SIGNAL_RELOAD);
@@ -2309,7 +2309,7 @@ static int image_unpack_exec(bContext *C, wmOperator *op)
                BKE_report(op->reports, RPT_WARNING, "AutoPack is enabled, so 
image will be packed again on file save");
        
        /* XXX unpackImage frees image buffers */
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
        
        unpackImage(op->reports, ima, method);
        
diff --git a/source/blender/editors/space_node/node_add.c 
b/source/blender/editors/space_node/node_add.c
index 5805c11..7140eb7 100644
--- a/source/blender/editors/space_node/node_add.c
+++ b/source/blender/editors/space_node/node_add.c
@@ -227,7 +227,7 @@ static int add_reroute_exec(bContext *C, wmOperator *op)
                float insert_point[2];
                
                /* always first */
-               ED_preview_kill_jobs(C);
+               ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
                
                node_deselect_all(snode);
                
@@ -347,7 +347,7 @@ static int node_add_file_exec(bContext *C, wmOperator *op)
                        return OPERATOR_CANCELLED;
        }
        
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
        
        node = node_add_node(C, NULL, type, snode->cursor[0], snode->cursor[1]);
        
@@ -426,7 +426,7 @@ static int node_add_mask_exec(bContext *C, wmOperator *op)
                return OPERATOR_CANCELLED;
        }
 
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
 
        node = node_add_node(C, NULL, CMP_NODE_MASK, snode->cursor[0], 
snode->cursor[1]);
 
diff --git a/source/blender/editors/space_node/node_edit.c 
b/source/blender/editors/space_node/node_edit.c
index a16adb0..d52a351 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -1142,7 +1142,7 @@ static int node_duplicate_exec(bContext *C, wmOperator 
*op)
        bNodeLink *link, *newlink, *lastlink;
        const bool keep_inputs = RNA_boolean_get(op->ptr, "keep_inputs");
        
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
        
        lastnode = ntree->nodes.last;
        for (node = ntree->nodes.first; node; node = node->next) {
@@ -1277,7 +1277,7 @@ static int node_read_renderlayers_exec(bContext *C, 
wmOperator *UNUSED(op))
        Scene *curscene = CTX_data_scene(C), *scene;
        bNode *node;
 
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), bmain);
 
        /* first tag scenes unread */
        for (scene = bmain->scene.first; scene; scene = scene->id.next)
@@ -1476,7 +1476,7 @@ static int node_preview_toggle_exec(bContext *C, 
wmOperator *UNUSED(op))
        if ((snode == NULL) || (snode->edittree == NULL))
                return OPERATOR_CANCELLED;
 
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
 
        node_flag_toggle_exec(snode, NODE_PREVIEW);
 
@@ -1540,7 +1540,7 @@ static int node_socket_toggle_exec(bContext *C, 
wmOperator *UNUSED(op))
        if ((snode == NULL) || (snode->edittree == NULL))
                return OPERATOR_CANCELLED;
 
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
 
        /* Toggle for all selected nodes */
        hidden = 0;
@@ -1588,7 +1588,7 @@ static int node_mute_exec(bContext *C, wmOperator 
*UNUSED(op))
        SpaceNode *snode = CTX_wm_space_node(C);
        bNode *node;
 
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
 
        for (node = snode->edittree->nodes.first; node; node = node->next) {
                /* Only allow muting of nodes having a mute func! */
@@ -1626,7 +1626,7 @@ static int node_delete_exec(bContext *C, wmOperator 
*UNUSED(op))
        SpaceNode *snode = CTX_wm_space_node(C);
        bNode *node, *next;
        
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
 
        for (node = snode->edittree->nodes.first; node; node = next) {
                next = node->next;
@@ -1667,7 +1667,7 @@ static int node_delete_reconnect_exec(bContext *C, 
wmOperator *UNUSED(op))
        SpaceNode *snode = CTX_wm_space_node(C);
        bNode *node, *next;
 
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
 
        for (node = snode->edittree->nodes.first; node; node = next) {
                next = node->next;
@@ -1924,7 +1924,7 @@ static int node_clipboard_copy_exec(bContext *C, 
wmOperator *UNUSED(op))
        bNode *node;
        bNodeLink *link, *newlink;
 
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
 
        /* clear current clipboard */
        BKE_node_clipboard_clear();
@@ -2037,7 +2037,7 @@ static int node_clipboard_paste_exec(bContext *C, 
wmOperator *op)
        if (!all_nodes_valid)
                return OPERATOR_CANCELLED;
 
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
 
        /* deselect old nodes */
        node_deselect_all(snode);
@@ -2445,7 +2445,7 @@ static int viewer_border_exec(bContext *C, wmOperator *op)
        void *lock;
        ImBuf *ibuf;
 
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
 
        ima = BKE_image_verify_viewer(IMA_TYPE_COMPOSITE, "Viewer Node");
        ibuf = BKE_image_acquire_ibuf(ima, NULL, &lock);
diff --git a/source/blender/editors/space_node/node_group.c 
b/source/blender/editors/space_node/node_group.c
index de119cf..2a8b0da 100644
--- a/source/blender/editors/space_node/node_group.c
+++ b/source/blender/editors/space_node/node_group.c
@@ -144,7 +144,7 @@ static int node_group_edit_exec(bContext *C, wmOperator *op)
        bNode *gnode;
        const bool exit = RNA_boolean_get(op->ptr, "exit");
        
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
        
        gnode = node_group_get_active(C, node_idname);
        
@@ -352,7 +352,7 @@ static int node_group_ungroup_exec(bContext *C, wmOperator 
*op)
        const char *node_idname = group_node_idname(C);
        bNode *gnode;
 
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
 
        gnode = node_group_get_active(C, node_idname);
        if (!gnode)
@@ -522,7 +522,7 @@ static int node_group_separate_exec(bContext *C, wmOperator 
*op)
        int type = RNA_enum_get(op->ptr, "type");
        float offx, offy;
 
-       ED_preview_kill_jobs(C);
+       ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
 
        /* are we insid

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to