Commit: a922a097ef5c453bf4bc515494a3ab5f402946e2 Author: Germano Cavalcante Date: Mon Mar 9 10:02:11 2020 -0300 Branches: master https://developer.blender.org/rBa922a097ef5c453bf4bc515494a3ab5f402946e2
Transform Snap Object: Remove depsgraph when creating context Currently, this change does not bring functional changes. But it is necessary to extend the use of the snap system for gizmos, since, after a Undo, the `depsgraph` pointed by the `snap_context` has its memory invalidated. Reviewed By: campbellbarton Differential Revision: https://developer.blender.org/D7013 =================================================================== M source/blender/editors/curve/editcurve.c M source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c M source/blender/editors/gpencil/gpencil_edit.c M source/blender/editors/include/ED_transform_snap_object_context.h M source/blender/editors/mesh/editmesh_tools.c M source/blender/editors/space_view3d/view3d_edit.c M source/blender/editors/space_view3d/view3d_gizmo_ruler.c M source/blender/editors/space_view3d/view3d_walk.c M source/blender/editors/transform/transform_snap.c M source/blender/editors/transform/transform_snap.h M source/blender/editors/transform/transform_snap_object.c M source/blender/makesrna/intern/rna_scene_api.c =================================================================== diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index ee1a48e9f1e..6fdf76bfb75 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -5677,10 +5677,11 @@ static int add_vertex_invoke(bContext *C, wmOperator *op, const wmEvent *event) const float mval[2] = {UNPACK2(event->mval)}; struct SnapObjectContext *snap_context = ED_transform_snap_object_context_create_view3d( - vc.bmain, vc.scene, vc.depsgraph, 0, vc.region, vc.v3d); + vc.bmain, vc.scene, 0, vc.region, vc.v3d); ED_transform_snap_object_project_view3d( snap_context, + vc.depsgraph, SCE_SNAP_MODE_FACE, &(const struct SnapObjectParams){ .snap_select = (vc.obedit != NULL) ? SNAP_NOT_ACTIVE : SNAP_ALL, diff --git a/source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c index f7b51a7a0cb..d8cd4d20579 100644 --- a/source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c +++ b/source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c @@ -276,6 +276,7 @@ static int gizmo_move_modal(bContext *C, float co[3]; if (ED_transform_snap_object_project_view3d( inter->snap_context_v3d, + CTX_data_ensure_evaluated_depsgraph(C), (SCE_SNAP_MODE_VERTEX | SCE_SNAP_MODE_EDGE | SCE_SNAP_MODE_FACE), &(const struct SnapObjectParams){ .snap_select = SNAP_ALL, @@ -369,12 +370,7 @@ static int gizmo_move_invoke(bContext *C, wmGizmo *gz, const wmEvent *event) switch (sa->spacetype) { case SPACE_VIEW3D: { inter->snap_context_v3d = ED_transform_snap_object_context_create_view3d( - CTX_data_main(C), - CTX_data_scene(C), - CTX_data_ensure_evaluated_depsgraph(C), - 0, - CTX_wm_region(C), - CTX_wm_view3d(C)); + CTX_data_main(C), CTX_data_scene(C), 0, CTX_wm_region(C), CTX_wm_view3d(C)); break; } default: diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c index a7e28fe1f87..420c2907c82 100644 --- a/source/blender/editors/gpencil/gpencil_edit.c +++ b/source/blender/editors/gpencil/gpencil_edit.c @@ -3426,7 +3426,7 @@ static int gp_strokes_reproject_exec(bContext *C, wmOperator *op) int cfra_prv = INT_MIN; /* init snap context for geometry projection */ sctx = ED_transform_snap_object_context_create_view3d( - bmain, scene, depsgraph, 0, region, CTX_wm_view3d(C)); + bmain, scene, 0, region, CTX_wm_view3d(C)); /* Go through each editable + selected stroke, adjusting each of its points one by one... */ GP_EDITABLE_STROKES_BEGIN (gpstroke_iter, C, gpl, gps) { @@ -3517,6 +3517,7 @@ static int gp_strokes_reproject_exec(bContext *C, wmOperator *op) ED_view3d_win_to_ray(region, xy, &ray_start[0], &ray_normal[0]); if (ED_transform_snap_object_project_ray(sctx, + depsgraph, &(const struct SnapObjectParams){ .snap_select = SNAP_ALL, }, diff --git a/source/blender/editors/include/ED_transform_snap_object_context.h b/source/blender/editors/include/ED_transform_snap_object_context.h index 34f2bf8361a..b998ac87819 100644 --- a/source/blender/editors/include/ED_transform_snap_object_context.h +++ b/source/blender/editors/include/ED_transform_snap_object_context.h @@ -79,11 +79,9 @@ struct SnapObjectParams { typedef struct SnapObjectContext SnapObjectContext; SnapObjectContext *ED_transform_snap_object_context_create(struct Main *bmain, struct Scene *scene, - struct Depsgraph *depsgraph, int flag); SnapObjectContext *ED_transform_snap_object_context_create_view3d(struct Main *bmain, struct Scene *scene, - struct Depsgraph *depsgraph, int flag, /* extra args for view3d */ const struct ARegion *region, @@ -99,6 +97,7 @@ void ED_transform_snap_object_context_set_editmesh_callbacks( void *user_data); bool ED_transform_snap_object_project_ray_ex(struct SnapObjectContext *sctx, + struct Depsgraph *depsgraph, const struct SnapObjectParams *params, const float ray_start[3], const float ray_normal[3], @@ -110,6 +109,7 @@ bool ED_transform_snap_object_project_ray_ex(struct SnapObjectContext *sctx, struct Object **r_ob, float r_obmat[4][4]); bool ED_transform_snap_object_project_ray(SnapObjectContext *sctx, + struct Depsgraph *depsgraph, const struct SnapObjectParams *params, const float ray_origin[3], const float ray_direction[3], @@ -118,6 +118,7 @@ bool ED_transform_snap_object_project_ray(SnapObjectContext *sctx, float r_no[3]); bool ED_transform_snap_object_project_ray_all(SnapObjectContext *sctx, + struct Depsgraph *depsgraph, const struct SnapObjectParams *params, const float ray_start[3], const float ray_normal[3], @@ -126,6 +127,7 @@ bool ED_transform_snap_object_project_ray_all(SnapObjectContext *sctx, struct ListBase *r_hit_list); short ED_transform_snap_object_project_view3d_ex(struct SnapObjectContext *sctx, + struct Depsgraph *depsgraph, const unsigned short snap_to, const struct SnapObjectParams *params, const float mval[2], @@ -137,6 +139,7 @@ short ED_transform_snap_object_project_view3d_ex(struct SnapObjectContext *sctx, struct Object **r_ob, float r_obmat[4][4]); bool ED_transform_snap_object_project_view3d(struct SnapObjectContext *sctx, + struct Depsgraph *depsgraph, const unsigned short snap_to, const struct SnapObjectParams *params, const float mval[2], @@ -147,6 +150,7 @@ bool ED_transform_snap_object_project_view3d(struct SnapObjectContext *sctx, float r_no[3]); bool ED_transform_snap_object_project_all_view3d_ex(SnapObjectContext *sctx, + struct Depsgraph *depsgraph, const struct SnapObjectParams *params, const float mval[2], float ray_depth, diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index e38bb90fd08..a4546780dd9 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -420,7 +420,7 @@ void EDBM_project_snap_verts( ED_view3d_init_mats_rv3d(obedit, region->regiondata); struct SnapObjectContext *snap_context = ED_transform_snap_object_context_create_view3d( - bmain, CTX_data_scene(C), depsgraph, 0, region, CTX_wm_view3d(C)); + bmain, CTX_data_scene(C), 0, region, CTX_wm_view3d(C)); BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) { @@ -428,6 +428,7 @@ void EDBM_project_snap_verts( if (ED_view3d_project_float_object(region, eve->co, mval, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK) { if (ED_transform_snap_object_project_view3d(snap_context, + depsgraph, SCE_SNAP_MODE_FACE, &(const struct SnapObjectParams){ .snap_select = SNAP_NOT_ACTIVE, diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 00b696da756..415c275090d 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -5028,12 +5028,13 @@ void ED_view3d_cursor3d_position_rotation(bContext *C, float ray_co[3]; struct SnapObjectContext *snap_context = ED_transform_snap_object_context_create_view3d( - bmain, scene, CTX_data_ensure_evaluated_depsgraph(C), 0, region, v3d); + bmain, scene, 0, region, v3d); float obmat[4][4]; Object *ob_dummy = NULL; float dist_px = 0; if (ED_transform_snap_object_project_view3d_ex(snap_context, + CTX_data_ensure_evaluated_depsgraph(C), SCE_SNAP_MODE_FACE, @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list [email protected] https://lists.blender.org/mailman/listinfo/bf-blender-cvs
