Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorJeroen Bakker <jeroen@blender.org>2022-09-08 11:20:26 +0300
committerJeroen Bakker <jeroen@blender.org>2022-09-08 11:20:26 +0300
commit5b5e2d47737c2e2203ac82e3f5e7e80bb4703480 (patch)
treecd468ee7f27400e8ff61ab75eab8f9d6daf8a316 /source
parenta64edb19ac59a723c8e2b22c3a4132b726084905 (diff)
Add ensure_sync before BKE_view_layer_active_base_get.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/object.cc1
-rw-r--r--source/blender/draw/intern/draw_common.c1
-rw-r--r--source/blender/editors/armature/armature_select.c1
-rw-r--r--source/blender/editors/curve/editcurve.c1
-rw-r--r--source/blender/editors/curve/editcurve_select.c1
-rw-r--r--source/blender/editors/lattice/editlattice_select.c1
-rw-r--r--source/blender/editors/mesh/editmesh_path.c2
-rw-r--r--source/blender/editors/mesh/editmesh_polybuild.c7
-rw-r--r--source/blender/editors/mesh/editmesh_select.c1
-rw-r--r--source/blender/editors/metaball/mball_edit.c5
-rw-r--r--source/blender/editors/object/object_add.cc1
-rw-r--r--source/blender/editors/object/object_constraint.c1
-rw-r--r--source/blender/editors/object/object_hook.c1
-rw-r--r--source/blender/editors/object/object_select.c4
-rw-r--r--source/blender/editors/space_outliner/outliner_collections.cc2
-rw-r--r--source/blender/editors/space_outliner/outliner_tools.cc2
-rw-r--r--source/blender/editors/space_outliner/outliner_tree.cc24
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_buttons.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_gizmo_armature.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_gizmo_camera.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_gizmo_empty.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_gizmo_forcefield.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_gizmo_light.c6
-rw-r--r--source/blender/editors/space_view3d/view3d_gizmo_preselect_type.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_select.cc6
-rw-r--r--source/blender/editors/transform/transform_generics.c4
-rw-r--r--source/blender/editors/transform/transform_snap.c4
-rw-r--r--source/blender/editors/util/ed_util.c2
29 files changed, 73 insertions, 19 deletions
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 = 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 *obt;
diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c
index 4f76ed60e15..908e3a3ccf7 100644
--- a/source/blender/editors/object/object_hook.c
+++ b/source/blender/editors/object/object_hook.c
@@ -490,6 +490,7 @@ static Object *add_hook_object_new(
Base *basedit;
Object *ob;
ob = BKE_object_add(bmain, scene, view_layer, OB_EMPTY, NULL);
+ BKE_view_layer_ensure_sync(scene, view_layer);
Base *basact = BKE_view_layer_active_base_get(view_layer, __func__);
BLI_assert(basact->object == ob);
if (v3d && v3d->localvd) {
diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c
index a232670a7d2..6aae4aa711d 100644
--- a/source/blender/editors/object/object_select.c
+++ b/source/blender/editors/object/object_select.c
@@ -218,9 +218,8 @@ Base *ED_object_find_first_by_data_id(const Scene *scene, ViewLayer *view_layer,
{
BLI_assert(OB_DATA_SUPPORT_ID(GS(id->name)));
- BKE_view_layer_ensure_sync(scene, view_layer);
-
/* Try active object. */
+ BKE_view_layer_ensure_sync(scene, view_layer);
Base *basact = BKE_view_layer_active_base_get(view_layer, __func__);
if (basact && basact->object && basact->object->data == id) {
@@ -254,6 +253,7 @@ bool ED_object_jump_to_object(bContext *C, Object *ob, const bool UNUSED(reveal_
Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
View3D *v3d = CTX_wm_view3d(C);
+ BKE_view_layer_ensure_sync(scene, view_layer);
Base *base = BKE_view_layer_base_find(view_layer, ob);
if (base == NULL) {
diff --git a/source/blender/editors/space_outliner/outliner_collections.cc b/source/blender/editors/space_outliner/outliner_collections.cc
index aacfdc3c47b..970b12f7d39 100644
--- a/source/blender/editors/space_outliner/outliner_collections.cc
+++ b/source/blender/editors/space_outliner/outliner_collections.cc
@@ -413,6 +413,7 @@ static int collection_hierarchy_delete_exec(bContext *C, wmOperator *op)
Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
struct wmMsgBus *mbus = CTX_wm_message_bus(C);
+ BKE_view_layer_ensure_sync(scene, view_layer);
const Base *basact_prev = BKE_view_layer_active_base_get(view_layer, __func__);
outliner_collection_delete(C, bmain, scene, op->reports, true);
@@ -422,6 +423,7 @@ static int collection_hierarchy_delete_exec(bContext *C, wmOperator *op)
WM_main_add_notifier(NC_SCENE | ND_LAYER, nullptr);
+ BKE_view_layer_ensure_sync(scene, view_layer);
if (basact_prev != BKE_view_layer_active_base_get(view_layer, __func__)) {
WM_msg_publish_rna_prop(mbus, &scene->id, view_layer, LayerObjects, active);
}
diff --git a/source/blender/editors/space_outliner/outliner_tools.cc b/source/blender/editors/space_outliner/outliner_tools.cc
index c0843b55ab6..1a5bd1787a3 100644
--- a/source/blender/editors/space_outliner/outliner_tools.cc
+++ b/source/blender/editors/space_outliner/outliner_tools.cc
@@ -2392,6 +2392,7 @@ static int outliner_delete_exec(bContext *C, wmOperator *op)
SpaceOutliner *space_outliner = CTX_wm_space_outliner(C);
struct wmMsgBus *mbus = CTX_wm_message_bus(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
+ BKE_view_layer_ensure_sync(scene, view_layer);
const Base *basact_prev = BKE_view_layer_active_base_get(view_layer, __func__);
const bool delete_hierarchy = RNA_boolean_get(op->ptr, "hierarchy");
@@ -2436,6 +2437,7 @@ static int outliner_delete_exec(bContext *C, wmOperator *op)
DEG_id_tag_update(&scene->id, ID_RECALC_COPY_ON_WRITE);
DEG_relations_tag_update(bmain);
+ BKE_view_layer_ensure_sync(scene, view_layer);
if (basact_prev != BKE_view_layer_active_base_get(view_layer, __func__)) {
WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, scene);
WM_msg_publish_rna_prop(mbus, &scene->id, view_layer, LayerObjects, active);
diff --git a/source/blender/editors/space_outliner/outliner_tree.cc b/source/blender/editors/space_outliner/outliner_tree.cc
index 9681637f11f..7d421f075fb 100644
--- a/source/blender/editors/space_outliner/outliner_tree.cc
+++ b/source/blender/editors/space_outliner/outliner_tree.cc
@@ -1395,7 +1395,8 @@ static int outliner_exclude_filter_get(const SpaceOutliner *space_outliner)
return exclude_filter;
}
-static bool outliner_element_visible_get(ViewLayer *view_layer,
+static bool outliner_element_visible_get(const Scene *scene,
+ ViewLayer *view_layer,
TreeElement *te,
const int exclude_filter)
{
@@ -1475,6 +1476,7 @@ static bool outliner_element_visible_get(ViewLayer *view_layer,
}
else {
BLI_assert(exclude_filter & SO_FILTER_OB_STATE_ACTIVE);
+ BKE_view_layer_ensure_sync(scene, view_layer);
if (base != BKE_view_layer_active_base_get(view_layer, __func__)) {
is_visible = false;
}
@@ -1557,6 +1559,7 @@ static TreeElement *outliner_extract_children_from_subtree(TreeElement *element,
}
static int outliner_filter_subtree(SpaceOutliner *space_outliner,
+ const Scene *scene,
ViewLayer *view_layer,
ListBase *lb,
const char *search_string,
@@ -1567,18 +1570,18 @@ static int outliner_filter_subtree(SpaceOutliner *space_outliner,
for (te = static_cast<TreeElement *>(lb->first); te; te = te_next) {
te_next = te->next;
- if ((outliner_element_visible_get(view_layer, te, exclude_filter) == false)) {
+ if ((outliner_element_visible_get(scene, view_layer, te, exclude_filter) == false)) {
/* Don't free the tree, but extract the children from the parent and add to this tree. */
/* This also needs filtering the subtree prior (see T69246). */
outliner_filter_subtree(
- space_outliner, view_layer, &te->subtree, search_string, exclude_filter);
+ space_outliner, scene, view_layer, &te->subtree, search_string, exclude_filter);
te_next = outliner_extract_children_from_subtree(te, lb);
continue;
}
if ((exclude_filter & SO_FILTER_SEARCH) == 0) {
/* Filter subtree too. */
outliner_filter_subtree(
- space_outliner, view_layer, &te->subtree, search_string, exclude_filter);
+ space_outliner, scene, view_layer, &te->subtree, search_string, exclude_filter);
continue;
}
@@ -1596,7 +1599,8 @@ static int outliner_filter_subtree(SpaceOutliner *space_outliner,
if ((!TSELEM_OPEN(tselem, space_outliner)) ||
outliner_filter_subtree(
- space_outliner, view_layer, &te->subtree, search_string, exclude_filter) == 0) {
+ space_outliner, scene, view_layer, &te->subtree, search_string, exclude_filter) ==
+ 0) {
outliner_free_tree_element(te, lb);
}
}
@@ -1608,7 +1612,7 @@ static int outliner_filter_subtree(SpaceOutliner *space_outliner,
/* filter subtree too */
outliner_filter_subtree(
- space_outliner, view_layer, &te->subtree, search_string, exclude_filter);
+ space_outliner, scene, view_layer, &te->subtree, search_string, exclude_filter);
}
}
@@ -1616,7 +1620,9 @@ static int outliner_filter_subtree(SpaceOutliner *space_outliner,
return (BLI_listbase_is_empty(lb) == false);
}
-static void outliner_filter_tree(SpaceOutliner *space_outliner, ViewLayer *view_layer)
+static void outliner_filter_tree(SpaceOutliner *space_outliner,
+ const Scene *scene,
+ ViewLayer *view_layer)
{
char search_buff[sizeof(((struct SpaceOutliner *)nullptr)->search_string) + 2];
char *search_string;
@@ -1637,7 +1643,7 @@ static void outliner_filter_tree(SpaceOutliner *space_outliner, ViewLayer *view_
}
outliner_filter_subtree(
- space_outliner, view_layer, &space_outliner->tree, search_string, exclude_filter);
+ space_outliner, scene, view_layer, &space_outliner->tree, search_string, exclude_filter);
}
static void outliner_clear_newid_from_main(Main *bmain)
@@ -1714,7 +1720,7 @@ void outliner_build_tree(Main *mainvar,
outliner_collections_children_sort(&space_outliner->tree);
}
- outliner_filter_tree(space_outliner, view_layer);
+ outliner_filter_tree(space_outliner, scene, view_layer);
outliner_restore_scrolling_position(space_outliner, region, &focus);
/* `ID.newid` pointer is abused when building tree, DO NOT call #BKE_main_id_newptr_and_tag_clear
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 8f3e166391b..cd98d256509 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -1891,7 +1891,9 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes
* without showing the object.
*
* See T85532 for alternatives that were considered. */
+ 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__);
if (base) {
Object *ob = base->object;
diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c
index f5e41676bc3..3c4fad39699 100644
--- a/source/blender/editors/space_view3d/view3d_buttons.c
+++ b/source/blender/editors/space_view3d/view3d_buttons.c
@@ -1718,7 +1718,9 @@ static void do_view3d_region_buttons(bContext *C, void *UNUSED(index), int event
static bool view3d_panel_transform_poll(const bContext *C, PanelType *UNUSED(pt))
{
+ const Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
+ BKE_view_layer_ensure_sync(scene, view_layer);
return (BKE_view_layer_active_base_get(view_layer, __func__) != NULL);
}
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_armature.c b/source/blender/editors/space_view3d/view3d_gizmo_armature.c
index dc8d3c49ef9..4f5d5d5a492 100644
--- a/source/blender/editors/space_view3d/view3d_gizmo_armature.c
+++ b/source/blender/editors/space_view3d/view3d_gizmo_armature.c
@@ -113,7 +113,9 @@ static bool WIDGETGROUP_armature_spline_poll(const bContext *C, wmGizmoGroupType
return false;
}
+ 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__);
if (base && BASE_SELECTABLE(v3d, base)) {
Object *ob = BKE_object_pose_armature_get(base->object);
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_camera.c b/source/blender/editors/space_view3d/view3d_gizmo_camera.c
index e8cbd9ff372..00e183a49d2 100644
--- a/source/blender/editors/space_view3d/view3d_gizmo_camera.c
+++ b/source/blender/editors/space_view3d/view3d_gizmo_camera.c
@@ -55,7 +55,9 @@ static bool WIDGETGROUP_camera_poll(const bContext *C, wmGizmoGroupType *UNUSED(
return false;
}
+ 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__);
if (base && BASE_SELECTABLE(v3d, base)) {
Object *ob = base->object;
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_empty.c b/source/blender/editors/space_view3d/view3d_gizmo_empty.c
index 37bbaf4b7db..88682110c5c 100644
--- a/source/blender/editors/space_view3d/view3d_gizmo_empty.c
+++ b/source/blender/editors/space_view3d/view3d_gizmo_empty.c
@@ -99,7 +99,9 @@ static bool WIDGETGROUP_empty_image_poll(const bContext *C, wmGizmoGroupType *UN
return false;
}
+ 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__);
if (base && BASE_SELECTABLE(v3d, base)) {
Object *ob = base->object;
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_forcefield.c b/source/blender/editors/space_view3d/view3d_gizmo_forcefield.c
index f86657c0647..9be52a8045d 100644
--- a/source/blender/editors/space_view3d/view3d_gizmo_forcefield.c
+++ b/source/blender/editors/space_view3d/view3d_gizmo_forcefield.c
@@ -42,7 +42,9 @@ static bool WIDGETGROUP_forcefield_poll(const bContext *C, wmGizmoGroupType *UNU
return false;
}
+ 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__);
if (base && BASE_SELECTABLE(v3d, base)) {
Object *ob = base->object;
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_light.c b/source/blender/editors/space_view3d/view3d_gizmo_light.c
index d378a5edb1b..00b06ccac91 100644
--- a/source/blender/editors/space_view3d/view3d_gizmo_light.c
+++ b/source/blender/editors/space_view3d/view3d_gizmo_light.c
@@ -45,7 +45,9 @@ static bool WIDGETGROUP_light_spot_poll(const bContext *C, wmGizmoGroupType *UNU
return false;
}
+ 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__);
if (base && BASE_SELECTABLE(v3d, base)) {
Object *ob = base->object;
@@ -158,7 +160,9 @@ static bool WIDGETGROUP_light_area_poll(const bContext *C, wmGizmoGroupType *UNU
return false;
}
+ 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__);
if (base && BASE_SELECTABLE(v3d, base)) {
Object *ob = base->object;
@@ -243,7 +247,9 @@ static bool WIDGETGROUP_light_target_poll(const bContext *C, wmGizmoGroupType *U
return false;
}
+ 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__);
if (base && BASE_SELECTABLE(v3d, base)) {
Object *ob = base->object;
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_preselect_type.c b/source/blender/editors/space_view3d/view3d_gizmo_preselect_type.c
index 9f98ea4d142..524e4e119bb 100644
--- a/source/blender/editors/space_view3d/view3d_gizmo_preselect_type.c
+++ b/source/blender/editors/space_view3d/view3d_gizmo_preselect_type.c
@@ -128,6 +128,7 @@ static int gizmo_preselect_elem_test_select(bContext *C, wmGizmo *gz, const int
Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
View3D *v3d = CTX_wm_view3d(C);
+ BKE_view_layer_ensure_sync(scene, view_layer);
if (((gz_ele->bases)) == NULL ||
(gz_ele->bases[0] != BKE_view_layer_active_base_get(view_layer, __func__))) {
MEM_SAFE_FREE(gz_ele->bases);
@@ -356,6 +357,7 @@ static int gizmo_preselect_edgering_test_select(bContext *C, wmGizmo *gz, const
Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
View3D *v3d = CTX_wm_view3d(C);
+ BKE_view_layer_ensure_sync(scene, view_layer);
if (((gz_ring->bases)) == NULL ||
(gz_ring->bases[0] != BKE_view_layer_active_base_get(view_layer, __func__))) {
MEM_SAFE_FREE(gz_ring->bases);
diff --git a/source/blender/editors/space_view3d/view3d_select.cc b/source/blender/editors/space_view3d/view3d_select.cc
index 13a6f834948..e6bea3868f5 100644
--- a/source/blender/editors/space_view3d/view3d_select.cc
+++ b/source/blender/editors/space_view3d/view3d_select.cc
@@ -1462,6 +1462,7 @@ static int object_select_menu_exec(bContext *C, wmOperator *op)
View3D *v3d = CTX_wm_view3d(C);
Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
+ BKE_view_layer_ensure_sync(scene, view_layer);
const Base *oldbasact = BKE_view_layer_active_base_get(view_layer, __func__);
Base *basact = nullptr;
@@ -1658,6 +1659,7 @@ static int bone_select_menu_exec(bContext *C, wmOperator *op)
View3D *v3d = CTX_wm_view3d(C);
Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
+ BKE_view_layer_ensure_sync(scene, view_layer);
const Base *oldbasact = BKE_view_layer_active_base_get(view_layer, __func__);
Base *basact = object_mouse_select_menu_data[name_index].base_ptr;
@@ -2167,6 +2169,7 @@ static Base *mouse_select_eval_buffer(ViewContext *vc,
/* It's possible there are no hits (all objects contained bones). */
if (hits > 0) {
/* Only exclude active object when it is selected. */
+ BKE_view_layer_ensure_sync(scene, view_layer);
Base *base = BKE_view_layer_active_base_get(view_layer, __func__);
if (base && (base->flag & BASE_SELECTED)) {
const int select_id_active = base->object->runtime.select_id;
@@ -3449,7 +3452,8 @@ static bool do_mesh_box_select(ViewContext *vc,
}
if (ts->selectmode & SCE_SELECT_EDGE) {
/* Does both use_zbuf and non-use_zbuf versions (need screen cos for both) */
- struct BoxSelectUserData_ForMeshEdge cb_data {};
+ struct BoxSelectUserData_ForMeshEdge cb_data {
+ };
cb_data.data = &data;
cb_data.esel = use_zbuf ? esel : nullptr;
cb_data.backbuf_offset = use_zbuf ? DRW_select_buffer_context_offset_for_object_elem(
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 19fedcbc798..9b58f412eb1 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -1085,8 +1085,8 @@ bool calculateCenterActive(TransInfo *t, bool select_only, float r_center[3])
}
else {
/* object mode */
- ViewLayer *view_layer = t->view_layer;
- Base *base = BKE_view_layer_active_base_get(view_layer, __func__);
+ BKE_view_layer_ensure_sync(t->scene, t->view_layer);
+ Base *base = BKE_view_layer_active_base_get(t->view_layer, __func__);
if (base && ((!select_only) || ((base->flag & BASE_SELECTED) != 0))) {
copy_v3_v3(r_center, base->object->obmat[3]);
return true;
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index dc50c8b733c..3c151285a83 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -722,8 +722,8 @@ static eSnapMode snap_mode_from_spacetype(TransInfo *t)
static eSnapTargetSelect snap_target_select_from_spacetype(TransInfo *t)
{
- ViewLayer *view_layer = t->view_layer;
- Base *base_act = BKE_view_layer_active_base_get(view_layer, __func__);
+ BKE_view_layer_ensure_sync(t->scene, t->view_layer);
+ Base *base_act = BKE_view_layer_active_base_get(t->view_layer, __func__);
eSnapTargetSelect ret = SCE_SNAP_TARGET_ALL;
diff --git a/source/blender/editors/util/ed_util.c b/source/blender/editors/util/ed_util.c
index ec6e1a2e2a5..cb2cb5bb398 100644
--- a/source/blender/editors/util/ed_util.c
+++ b/source/blender/editors/util/ed_util.c
@@ -60,7 +60,7 @@ void ED_editors_init_for_undo(Main *bmain)
{
wmWindowManager *wm = bmain->wm.first;
LISTBASE_FOREACH (wmWindow *, win, &wm->windows) {
- const Scene *scene = WM_window_get_active_scene(win);
+ Scene *scene = WM_window_get_active_scene(win);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
BKE_view_layer_ensure_sync(scene, view_layer);
Object *ob = BKE_view_layer_active_object_get(view_layer);