[Bf-blender-cvs] [a922a097ef5] master: Transform Snap Object: Remove depsgraph when creating context

Germano Cavalcante noreply at git.blender.org
Mon Mar 9 14:03:17 CET 2020


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. @@



More information about the Bf-blender-cvs mailing list