diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-11-18 17:51:31 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-11-18 17:51:31 +0300 |
commit | 54c6a9fd49bf2bdd9de8775b615c174aa55c40cd (patch) | |
tree | ffff6b1e6b9cc3112362258e7364b48a4966792c /source | |
parent | 8e16c5294bf2b6b6c72ec9c6a2b8dcc9b79c4acd (diff) |
Make it possible to use preview/viewport render job kill without context
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/include/ED_render.h | 5 | ||||
-rw-r--r-- | source/blender/editors/render/render_internal.c | 6 | ||||
-rw-r--r-- | source/blender/editors/render/render_preview.c | 7 | ||||
-rw-r--r-- | source/blender/editors/space_image/image_ops.c | 8 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_add.c | 6 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_edit.c | 20 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_group.c | 10 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_relationships.c | 13 | ||||
-rw-r--r-- | source/blender/editors/util/undo.c | 10 |
9 files changed, 44 insertions, 41 deletions
diff --git a/source/blender/editors/include/ED_render.h b/source/blender/editors/include/ED_render.h index ab1dbabe793..0227ae3e85a 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 baf25a49f7c..b5728519034 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 2a0ec853079..47f7b6fe543 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 836ff25bddc..2a03dc66ebd 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 5805c11a438..7140eb79440 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 a16adb09b4f..d52a351ffc2 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 de119cf04fb..2a8b0da5b3c 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 inside of a group? */ ngroup = snode->edittree; @@ -915,7 +915,7 @@ static int node_group_make_exec(bContext *C, wmOperator *op) bNode *gnode; Main *bmain = CTX_data_main(C); - ED_preview_kill_jobs(C); + ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C)); if (!node_group_make_test_selected(ntree, NULL, ntree_idname, op->reports)) return OPERATOR_CANCELLED; @@ -966,7 +966,7 @@ static int node_group_insert_exec(bContext *C, wmOperator *op) bNode *gnode; Main *bmain = CTX_data_main(C); - 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); diff --git a/source/blender/editors/space_node/node_relationships.c b/source/blender/editors/space_node/node_relationships.c index 8dfc2ac8e83..3d7b5eba738 100644 --- a/source/blender/editors/space_node/node_relationships.c +++ b/source/blender/editors/space_node/node_relationships.c @@ -368,7 +368,7 @@ static int node_active_link_viewer_exec(bContext *C, wmOperator *UNUSED(op)) if (!node) return OPERATOR_CANCELLED; - ED_preview_kill_jobs(C); + ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C)); if (node_link_viewer(C, node) == OPERATOR_CANCELLED) return OPERATOR_CANCELLED; @@ -747,7 +747,7 @@ static int node_link_invoke(bContext *C, wmOperator *op, const wmEvent *event) UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], &cursor[0], &cursor[1]); - ED_preview_kill_jobs(C); + ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C)); nldrag = node_link_init(snode, cursor, detach); @@ -803,7 +803,7 @@ static int node_make_link_exec(bContext *C, wmOperator *op) SpaceNode *snode = CTX_wm_space_node(C); const bool replace = RNA_boolean_get(op->ptr, "replace"); - ED_preview_kill_jobs(C); + ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C)); snode_autoconnect(snode, 1, replace); @@ -874,7 +874,7 @@ static int cut_links_exec(bContext *C, wmOperator *op) bool found = false; bNodeLink *link, *next; - ED_preview_kill_jobs(C); + ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C)); for (link = snode->edittree->links.first; link; link = next) { next = link->next; @@ -884,7 +884,8 @@ static int cut_links_exec(bContext *C, wmOperator *op) if (cut_links_intersect(link, mcoords, i)) { if (found == false) { - ED_preview_kill_jobs(C); + /* TODO(sergey): Why did we kill jobs twice? */ + ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C)); found = true; } @@ -941,7 +942,7 @@ static int detach_links_exec(bContext *C, wmOperator *UNUSED(op)) bNodeTree *ntree = snode->edittree; bNode *node; - ED_preview_kill_jobs(C); + ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C)); for (node = ntree->nodes.first; node; node = node->next) { if (node->flag & SELECT) { diff --git a/source/blender/editors/util/undo.c b/source/blender/editors/util/undo.c index 6c0efad6f26..104414d7f81 100644 --- a/source/blender/editors/util/undo.c +++ b/source/blender/editors/util/undo.c @@ -47,6 +47,7 @@ #include "BKE_blender.h" #include "BKE_context.h" #include "BKE_global.h" +#include "BKE_main.h" #include "BKE_screen.h" #include "ED_armature.h" @@ -124,6 +125,7 @@ static int ed_undo_step(bContext *C, int step, const char *undoname) { wmWindowManager *wm = CTX_wm_manager(C); wmWindow *win = CTX_wm_window(C); + Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); Object *obedit = CTX_data_edit_object(C); Object *obact = CTX_data_active_object(C); @@ -146,7 +148,7 @@ static int ed_undo_step(bContext *C, int step, const char *undoname) if ((obact && (obact->mode & OB_MODE_TEXTURE_PAINT)) || (sima->mode == SI_MODE_PAINT)) { if (!ED_undo_paint_step(C, UNDO_PAINT_IMAGE, step, undoname) && undoname) { if (U.uiflag & USER_GLOBALUNDO) { - ED_viewport_render_kill_jobs(C, true); + ED_viewport_render_kill_jobs(wm, bmain, true); BKE_undo_name(C, undoname); } } @@ -199,7 +201,7 @@ static int ed_undo_step(bContext *C, int step, const char *undoname) /* for example, texface stores image pointers */ undo_editmode_clear(); - ED_viewport_render_kill_jobs(C, true); + ED_viewport_render_kill_jobs(wm, bmain, true); if (undoname) BKE_undo_name(C, undoname); @@ -379,7 +381,7 @@ int ED_undo_operator_repeat(bContext *C, struct wmOperator *op) { int retval; - ED_viewport_render_kill_jobs(C, true); + ED_viewport_render_kill_jobs(wm, CTX_data_main(C), true); if (G.debug & G_DEBUG) printf("redo_cb: operator redo %s\n", op->type->name); @@ -583,7 +585,7 @@ static int undo_history_exec(bContext *C, wmOperator *op) ED_undo_paint_step_num(C, UNDO_PAINT_IMAGE, item ); } else { - ED_viewport_render_kill_jobs(C, true); + ED_viewport_render_kill_jobs(CTX_wm_manager(C), CTX_data_main(C), true); BKE_undo_number(C, item); WM_event_add_notifier(C, NC_SCENE | ND_LAYER_CONTENT, CTX_data_scene(C)); } |