[Bf-blender-cvs] [5b5e2d47737] temp-T73411-view-layer-lazy-cache: Add ensure_sync before BKE_view_layer_active_base_get.

Jeroen Bakker noreply at git.blender.org
Thu Sep 8 10:20:59 CEST 2022


Commit: 5b5e2d47737c2e2203ac82e3f5e7e80bb4703480
Author: Jeroen Bakker
Date:   Thu Sep 8 10:20:26 2022 +0200
Branches: temp-T73411-view-layer-lazy-cache
https://developer.blender.org/rB5b5e2d47737c2e2203ac82e3f5e7e80bb4703480

Add ensure_sync before BKE_view_layer_active_base_get.

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

M	source/blender/blenkernel/intern/object.cc
M	source/blender/draw/intern/draw_common.c
M	source/blender/editors/armature/armature_select.c
M	source/blender/editors/curve/editcurve.c
M	source/blender/editors/curve/editcurve_select.c
M	source/blender/editors/lattice/editlattice_select.c
M	source/blender/editors/mesh/editmesh_path.c
M	source/blender/editors/mesh/editmesh_polybuild.c
M	source/blender/editors/mesh/editmesh_select.c
M	source/blender/editors/metaball/mball_edit.c
M	source/blender/editors/object/object_add.cc
M	source/blender/editors/object/object_constraint.c
M	source/blender/editors/object/object_hook.c
M	source/blender/editors/object/object_select.c
M	source/blender/editors/space_outliner/outliner_collections.cc
M	source/blender/editors/space_outliner/outliner_tools.cc
M	source/blender/editors/space_outliner/outliner_tree.cc
M	source/blender/editors/space_view3d/space_view3d.c
M	source/blender/editors/space_view3d/view3d_buttons.c
M	source/blender/editors/space_view3d/view3d_gizmo_armature.c
M	source/blender/editors/space_view3d/view3d_gizmo_camera.c
M	source/blender/editors/space_view3d/view3d_gizmo_empty.c
M	source/blender/editors/space_view3d/view3d_gizmo_forcefield.c
M	source/blender/editors/space_view3d/view3d_gizmo_light.c
M	source/blender/editors/space_view3d/view3d_gizmo_preselect_type.c
M	source/blender/editors/space_view3d/view3d_select.cc
M	source/blender/editors/transform/transform_generics.c
M	source/blender/editors/transform/transform_snap.c
M	source/blender/editors/util/ed_util.c

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

diff --git a/source/blender/blenkernel/intern/object.cc b/source/blender/blenkernel/intern/object.cc
index 5336e79ce93..1b66bce94ee 100644
--- a/source/blender/blenkernel/intern/object.cc
+++ b/source/blender/blenkernel/intern/object.cc
@@ -2596,6 +2596,7 @@ Object **BKE_object_pose_array_get(const Scene *scene,
 Base **BKE_object_pose_base_array_get_ex(
     const Scene *scene, ViewLayer *view_layer, View3D *v3d, uint *r_bases_len, bool unique)
 {
+  BKE_view_layer_ensure_sync(scene, view_layer);
   Base *base_active = BKE_view_layer_active_base_get(view_layer, __func__);
   Object *ob_pose = base_active ? BKE_object_pose_armature_get(base_active->object) : nullptr;
   Base *base_pose = nullptr;
diff --git a/source/blender/draw/intern/draw_common.c b/source/blender/draw/intern/draw_common.c
index 866961066ef..1bc774a0922 100644
--- a/source/blender/draw/intern/draw_common.c
+++ b/source/blender/draw/intern/draw_common.c
@@ -280,6 +280,7 @@ int DRW_object_wire_theme_get(Object *ob, ViewLayer *view_layer, float **r_color
 {
   const DRWContextState *draw_ctx = DRW_context_state_get();
   const bool is_edit = (draw_ctx->object_mode & OB_MODE_EDIT) && (ob->mode & OB_MODE_EDIT);
+  BKE_view_layer_ensure_sync(draw_ctx->scene, view_layer);
   const Base *base = BKE_view_layer_active_base_get(view_layer, __func__);
   const bool active = base && ((ob->base_flag & BASE_FROM_DUPLI) ?
                                    (DRW_object_get_dupli_parent(ob) == base->object) :
diff --git a/source/blender/editors/armature/armature_select.c b/source/blender/editors/armature/armature_select.c
index e87cd5e556e..3a8fa1051f7 100644
--- a/source/blender/editors/armature/armature_select.c
+++ b/source/blender/editors/armature/armature_select.c
@@ -1103,6 +1103,7 @@ bool ED_armature_edit_select_pick_bone(bContext *C,
       arm->act_edbone = ebone;
     }
 
+    BKE_view_layer_ensure_sync(scene, view_layer);
     if (BKE_view_layer_active_base_get(view_layer, __func__) != basact) {
       ED_object_base_activate(C, basact);
     }
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c
index 3e94181224e..86524f4243e 100644
--- a/source/blender/editors/curve/editcurve.c
+++ b/source/blender/editors/curve/editcurve.c
@@ -4961,6 +4961,7 @@ bool ED_curve_editnurb_select_pick(bContext *C,
       WM_event_add_notifier(C, NC_MATERIAL | ND_SHADING_LINKS, NULL);
     }
 
+    BKE_view_layer_ensure_sync(vc.scene, vc.view_layer);
     if (BKE_view_layer_active_base_get(vc.view_layer, __func__) != basact) {
       ED_object_base_activate(C, basact);
     }
diff --git a/source/blender/editors/curve/editcurve_select.c b/source/blender/editors/curve/editcurve_select.c
index 67bbbcaaa9d..d399314f2db 100644
--- a/source/blender/editors/curve/editcurve_select.c
+++ b/source/blender/editors/curve/editcurve_select.c
@@ -2050,6 +2050,7 @@ static int edcu_shortest_path_pick_invoke(bContext *C, wmOperator *op, const wmE
 
   BKE_curve_nurb_vert_active_set(cu, nu_dst, vert_dst_p);
 
+  BKE_view_layer_ensure_sync(vc.scene, vc.view_layer);
   if (BKE_view_layer_active_base_get(vc.view_layer, __func__) != basact) {
     ED_object_base_activate(C, basact);
   }
diff --git a/source/blender/editors/lattice/editlattice_select.c b/source/blender/editors/lattice/editlattice_select.c
index 11011a3c037..7aefb17e064 100644
--- a/source/blender/editors/lattice/editlattice_select.c
+++ b/source/blender/editors/lattice/editlattice_select.c
@@ -685,6 +685,7 @@ bool ED_lattice_select_pick(bContext *C, const int mval[2], const struct SelectP
       lt->actbp = LT_ACTBP_NONE;
     }
 
+    BKE_view_layer_ensure_sync(vc.scene, vc.view_layer);
     if (BKE_view_layer_active_base_get(vc.view_layer, __func__) != basact) {
       ED_object_base_activate(C, basact);
     }
diff --git a/source/blender/editors/mesh/editmesh_path.c b/source/blender/editors/mesh/editmesh_path.c
index 7dfad090609..0424818504c 100644
--- a/source/blender/editors/mesh/editmesh_path.c
+++ b/source/blender/editors/mesh/editmesh_path.c
@@ -679,6 +679,7 @@ static int edbm_shortest_path_pick_invoke(bContext *C, wmOperator *op, const wmE
 
   em_setup_viewcontext(C, &vc);
   copy_v2_v2_int(vc.mval, event->mval);
+  BKE_view_layer_ensure_sync(vc.scene, vc.view_layer);
   Base *basact = BKE_view_layer_active_base_get(vc.view_layer, __func__);
   BMEditMesh *em = vc.em;
 
@@ -733,6 +734,7 @@ static int edbm_shortest_path_pick_invoke(bContext *C, wmOperator *op, const wmE
     return OPERATOR_PASS_THROUGH;
   }
 
+    BKE_view_layer_ensure_sync(vc.scene, vc.view_layer);
   if (BKE_view_layer_active_base_get(vc.view_layer, __func__) != basact) {
     ED_object_base_activate(C, basact);
   }
diff --git a/source/blender/editors/mesh/editmesh_polybuild.c b/source/blender/editors/mesh/editmesh_polybuild.c
index c4025624f48..95de13f32b6 100644
--- a/source/blender/editors/mesh/editmesh_polybuild.c
+++ b/source/blender/editors/mesh/editmesh_polybuild.c
@@ -87,7 +87,9 @@ static bool edbm_preselect_or_active(bContext *C, const View3D *v3d, Base **r_ba
     ED_view3d_gizmo_mesh_preselect_get_active(C, gz, r_base, r_ele);
   }
   else {
+    const Scene *scene = CTX_data_scene(C);
     ViewLayer *view_layer = CTX_data_view_layer(C);
+    BKE_view_layer_ensure_sync(scene, view_layer);
     Base *base = BKE_view_layer_active_base_get(view_layer, __func__);
     Object *obedit = base->object;
     BMEditMesh *em = BKE_editmesh_from_object(obedit);
@@ -150,6 +152,7 @@ static int edbm_polybuild_transform_at_cursor_invoke(bContext *C,
                   .is_destructive = true,
               });
   if (basact != NULL) {
+    BKE_view_layer_ensure_sync(vc.scene, vc.view_layer);
     if (BKE_view_layer_active_base_get(vc.view_layer, __func__) != basact) {
       ED_object_base_activate(C, basact);
     }
@@ -237,6 +240,7 @@ static int edbm_polybuild_delete_at_cursor_invoke(bContext *C,
                     .is_destructive = true,
                 });
     if (basact != NULL) {
+      BKE_view_layer_ensure_sync(vc.scene, vc.view_layer);
       if (BKE_view_layer_active_base_get(vc.view_layer, __func__) != basact) {
         ED_object_base_activate(C, basact);
       }
@@ -405,6 +409,7 @@ static int edbm_polybuild_face_at_cursor_invoke(bContext *C, wmOperator *op, con
                 });
 
     if (basact != NULL) {
+      BKE_view_layer_ensure_sync(vc.scene, vc.view_layer);
       if (BKE_view_layer_active_base_get(vc.view_layer, __func__) != basact) {
         ED_object_base_activate(C, basact);
       }
@@ -498,6 +503,7 @@ static int edbm_polybuild_split_at_cursor_invoke(bContext *C,
 
     WM_event_add_mousemove(vc.win);
 
+    BKE_view_layer_ensure_sync(vc.scene, vc.view_layer);
     if (BKE_view_layer_active_base_get(vc.view_layer, __func__) != basact) {
       ED_object_base_activate(C, basact);
     }
@@ -590,6 +596,7 @@ static int edbm_polybuild_dissolve_at_cursor_invoke(bContext *C,
                     .is_destructive = true,
                 });
 
+    BKE_view_layer_ensure_sync(vc.scene, vc.view_layer);
     if (BKE_view_layer_active_base_get(vc.view_layer, __func__) != basact) {
       ED_object_base_activate(C, basact);
     }
diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c
index b55080b010b..c88db573509 100644
--- a/source/blender/editors/mesh/editmesh_select.c
+++ b/source/blender/editors/mesh/editmesh_select.c
@@ -2219,6 +2219,7 @@ bool EDBM_select_pick(bContext *C, const int mval[2], const struct SelectPick_Pa
 
     /* Changing active object is handy since it allows us to
      * switch UV layers, vgroups for eg. */
+    BKE_view_layer_ensure_sync(vc.scene, vc.view_layer);
     if (BKE_view_layer_active_base_get(vc.view_layer, __func__) != basact) {
       ED_object_base_activate(C, basact);
     }
diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c
index 0429768efce..302b61584d1 100644
--- a/source/blender/editors/metaball/mball_edit.c
+++ b/source/blender/editors/metaball/mball_edit.c
@@ -464,7 +464,7 @@ static int select_random_metaelems_exec(bContext *C, wmOperator *op)
   const float randfac = RNA_float_get(op->ptr, "ratio");
   const int seed = WM_operator_properties_select_random_seed_increment_get(op);
 
-Scene *scene = CTX_data_scene(C);
+  Scene *scene = CTX_data_scene(C);
   ViewLayer *view_layer = CTX_data_view_layer(C);
   uint objects_len = 0;
   Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(
@@ -905,7 +905,7 @@ bool ED_mball_select_pick(bContext *C, const int mval[2], const struct SelectPic
         break;
       }
     }
-
+    const Scene *scene = CTX_data_scene(C);
     ViewLayer *view_layer = CTX_data_view_layer(C);
     MetaBall *mb = (MetaBall *)base->object->data;
     mb->lastelem = ml;
@@ -913,6 +913,7 @@ bool ED_mball_select_pick(bContext *C, const int mval[2], const struct SelectPic
     DEG_id_tag_update(&mb->id, ID_RECALC_SELECT);
     WM_event_add_notifier(C, NC_GEOM | ND_SELECT, mb);
 
+    BKE_view_layer_ensure_sync(scene, view_layer);
     if (BKE_view_layer_active_base_get(view_layer, __func__) != base) {
       ED_object_base_activate(C, base);
     }
diff --git a/source/blender/editors/object/object_add.cc b/source/blender/editors/object/object_add.cc
index 511ce6dfc13..1dded0fe170 100644
--- a/source/blender/editors/object/object_add.cc
+++ b/source/blender/editors/object/object_add.cc
@@ -3690,6 +3690,7 @@ static int duplicate_exec(bContext *C, wmOperator *op)
     ED_object_base_select(base, BA_DESELECT);
 
     /* new object will become active */
+    BKE_view_layer_ensure_sync(scene, view_layer);
     if (BKE_view_layer_active_base_get(view_layer, __func__) == base) {
       ob_new_active = ob_new;
     }
diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c
index 0798c4dd950..8f2aa41b7ce 100644
--- a/source/blender/editors/object/object_constraint.c
+++ b/source/blender/editors/object/object_constraint.c
@@ -2316,6 +2316,7 @@ static bool get_new_constraint_target(
     Main *bmain = CTX_data_main(C);
     Scene *scene = CTX_data_scene(C);
     ViewLayer *view_layer = 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list