[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