[Bf-blender-cvs] [a64edb19ac5] temp-T73411-view-layer-lazy-cache: Call ensure_sync before BKE_view_layer_active_object_get.
Jeroen Bakker
noreply at git.blender.org
Wed Sep 7 22:29:42 CEST 2022
Commit: a64edb19ac59a723c8e2b22c3a4132b726084905
Author: Jeroen Bakker
Date: Wed Sep 7 22:29:22 2022 +0200
Branches: temp-T73411-view-layer-lazy-cache
https://developer.blender.org/rBa64edb19ac59a723c8e2b22c3a4132b726084905
Call ensure_sync before BKE_view_layer_active_object_get.
===================================================================
M source/blender/blenkernel/intern/lib_override.cc
M source/blender/blenkernel/intern/object.cc
M source/blender/blenkernel/intern/paint.cc
M source/blender/blenkernel/intern/particle.c
M source/blender/draw/engines/overlay/overlay_extra.c
M source/blender/draw/intern/draw_manager.c
M source/blender/editors/animation/anim_filter.c
M source/blender/editors/armature/pose_select.c
M source/blender/editors/curve/editfont.c
M source/blender/editors/include/ED_armature.h
M source/blender/editors/interface/interface_ops.cc
M source/blender/editors/object/object_add.cc
M source/blender/editors/object/object_collection.c
M source/blender/editors/object/object_edit.c
M source/blender/editors/object/object_modes.c
M source/blender/editors/object/object_modifier.cc
M source/blender/editors/object/object_relations.c
M source/blender/editors/object/object_select.c
M source/blender/editors/physics/particle_edit.c
M source/blender/editors/physics/particle_edit_undo.c
M source/blender/editors/physics/particle_object.c
M source/blender/editors/physics/rigidbody_constraint.c
M source/blender/editors/screen/area.c
M source/blender/editors/screen/screen_context.c
M source/blender/editors/sculpt_paint/paint_image_ops_paint.cc
M source/blender/editors/sculpt_paint/paint_image_proj.c
M source/blender/editors/sculpt_paint/paint_utils.c
M source/blender/editors/sculpt_paint/sculpt_ops.c
M source/blender/editors/sculpt_paint/sculpt_undo.c
M source/blender/editors/space_buttons/buttons_context.c
M source/blender/editors/space_buttons/buttons_texture.c
M source/blender/editors/space_clip/tracking_ops_orient.c
M source/blender/editors/space_image/space_image.c
M source/blender/editors/space_info/info_stats.cc
M source/blender/editors/space_outliner/outliner_edit.cc
M source/blender/editors/space_outliner/outliner_select.cc
M source/blender/editors/space_outliner/outliner_sync.cc
M source/blender/editors/space_outliner/outliner_tools.cc
M source/blender/editors/space_outliner/outliner_utils.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_cursor_snap.c
M source/blender/editors/space_view3d/view3d_draw.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_ruler.c
M source/blender/editors/space_view3d/view3d_header.c
M source/blender/editors/space_view3d/view3d_navigate.c
M source/blender/editors/space_view3d/view3d_select.cc
M source/blender/editors/transform/transform.c
M source/blender/editors/transform/transform_convert.c
M source/blender/editors/transform/transform_convert_action.c
M source/blender/editors/transform/transform_convert_gpencil.c
M source/blender/editors/transform/transform_convert_graph.c
M source/blender/editors/transform/transform_convert_object.c
M source/blender/editors/transform/transform_convert_object_texspace.c
M source/blender/editors/transform/transform_convert_particle.c
M source/blender/editors/transform/transform_convert_sculpt.c
M source/blender/editors/transform/transform_generics.c
M source/blender/editors/transform/transform_gizmo_3d.c
M source/blender/editors/transform/transform_orientations.c
M source/blender/editors/transform/transform_snap.c
M source/blender/editors/undo/ed_undo.c
M source/blender/editors/util/ed_util.c
M source/blender/makesrna/intern/rna_brush.c
M source/blender/makesrna/intern/rna_scene.c
M source/blender/makesrna/intern/rna_sculpt_paint.c
M source/blender/makesrna/intern/rna_space.c
M source/blender/nodes/geometry/node_geometry_tree.cc
M source/blender/nodes/shader/node_shader_tree.cc
M source/blender/nodes/texture/node_texture_tree.c
M source/blender/windowmanager/WM_toolsystem.h
M source/blender/windowmanager/intern/wm_draw.c
M source/blender/windowmanager/intern/wm_event_system.cc
M source/blender/windowmanager/intern/wm_toolsystem.c
===================================================================
diff --git a/source/blender/blenkernel/intern/lib_override.cc b/source/blender/blenkernel/intern/lib_override.cc
index fa6458bd644..1b8dcc79a9f 100644
--- a/source/blender/blenkernel/intern/lib_override.cc
+++ b/source/blender/blenkernel/intern/lib_override.cc
@@ -1381,7 +1381,7 @@ bool BKE_lib_override_library_create(Main *bmain,
if (id_hierarchy_root_reference == nullptr) {
id_hierarchy_root_reference = id_root_reference;
}
-
+ BKE_view_layer_ensure_sync(scene, view_layer);
const Object *old_active_object = BKE_view_layer_active_object_get(view_layer);
const bool success = lib_override_library_create_do(bmain,
@@ -1720,6 +1720,7 @@ static bool lib_override_library_resync(Main *bmain,
ID *id_root_reference = id_root->override_library->reference;
ID *id;
+ BKE_view_layer_ensure_sync(scene, view_layer);
const Object *old_active_object = BKE_view_layer_active_object_get(view_layer);
if (id_root_reference->tag & LIB_TAG_MISSING) {
diff --git a/source/blender/blenkernel/intern/object.cc b/source/blender/blenkernel/intern/object.cc
index 6b6648616c9..5336e79ce93 100644
--- a/source/blender/blenkernel/intern/object.cc
+++ b/source/blender/blenkernel/intern/object.cc
@@ -2555,6 +2555,7 @@ Object *BKE_object_pose_armature_get_visible(Object *ob, ViewLayer *view_layer,
Object **BKE_object_pose_array_get_ex(
const Scene *scene, ViewLayer *view_layer, View3D *v3d, uint *r_objects_len, bool unique)
{
+ BKE_view_layer_ensure_sync(scene, view_layer);
Object *ob_active = BKE_view_layer_active_object_get(view_layer);
Object *ob_pose = BKE_object_pose_armature_get(ob_active);
Object **objects = nullptr;
diff --git a/source/blender/blenkernel/intern/paint.cc b/source/blender/blenkernel/intern/paint.cc
index ad322f76c4e..7700c737831 100644
--- a/source/blender/blenkernel/intern/paint.cc
+++ b/source/blender/blenkernel/intern/paint.cc
@@ -448,6 +448,7 @@ Paint *BKE_paint_get_active(Scene *sce, ViewLayer *view_layer)
{
if (sce && view_layer) {
ToolSettings *ts = sce->toolsettings;
+ BKE_view_layer_ensure_sync(sce, view_layer);
Object *actob = BKE_view_layer_active_object_get(view_layer);
if (actob) {
@@ -492,6 +493,7 @@ Paint *BKE_paint_get_active_from_context(const bContext *C)
if (sce && view_layer) {
ToolSettings *ts = sce->toolsettings;
+ BKE_view_layer_ensure_sync(sce, view_layer);
Object *obact = BKE_view_layer_active_object_get(view_layer);
if ((sima = CTX_wm_space_image(C)) != nullptr) {
@@ -522,6 +524,7 @@ ePaintMode BKE_paintmode_get_active_from_context(const bContext *C)
SpaceImage *sima;
if (sce && view_layer) {
+ BKE_view_layer_ensure_sync(sce, view_layer);
Object *obact = BKE_view_layer_active_object_get(view_layer);
if ((sima = CTX_wm_space_image(C)) != nullptr) {
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index d9f3bcf8b69..09ac09a3e6d 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -762,7 +762,9 @@ static PTCacheEdit *psys_orig_edit_get(ParticleSystem *psys)
bool psys_in_edit_mode(Depsgraph *depsgraph, const ParticleSystem *psys)
{
- const ViewLayer *view_layer = DEG_get_input_view_layer(depsgraph);
+ const Scene *scene = DEG_get_input_scene(depsgraph);
+ ViewLayer *view_layer = DEG_get_input_view_layer(depsgraph);
+ BKE_view_layer_ensure_sync(scene, view_layer);
const Object *object = BKE_view_layer_active_object_get(view_layer);
if (object == NULL) {
/* TODO(sergey): Needs double-check with multi-object edit. */
diff --git a/source/blender/draw/engines/overlay/overlay_extra.c b/source/blender/draw/engines/overlay/overlay_extra.c
index 8211b2f0490..89fc697b58d 100644
--- a/source/blender/draw/engines/overlay/overlay_extra.c
+++ b/source/blender/draw/engines/overlay/overlay_extra.c
@@ -1485,10 +1485,11 @@ static void OVERLAY_volume_extra(OVERLAY_ExtraCallBuffers *cb,
static void OVERLAY_object_center(OVERLAY_ExtraCallBuffers *cb,
Object *ob,
OVERLAY_PrivateData *pd,
+ const Scene *scene,
ViewLayer *view_layer)
{
const bool is_library = ID_REAL_USERS(&ob->id) > 1 || ID_IS_LINKED(ob);
-
+ BKE_view_layer_ensure_sync(scene, view_layer);
if (ob == BKE_view_layer_active_object_get(view_layer)) {
DRW_buffer_add_entry(cb->center_active, ob->obmat[3]);
}
@@ -1573,7 +1574,7 @@ void OVERLAY_extra_cache_populate(OVERLAY_Data *vedata, Object *ob)
/* don't show object extras in set's */
if (!from_dupli) {
if (draw_obcenters) {
- OVERLAY_object_center(cb, ob, pd, view_layer);
+ OVERLAY_object_center(cb, ob, pd, scene, view_layer);
}
if (draw_relations) {
OVERLAY_relationship_lines(cb, draw_ctx->depsgraph, draw_ctx->scene, ob);
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index f260086a4ef..7f11d3b615a 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1324,6 +1324,7 @@ void DRW_notify_view_update(const DRWUpdateContext *update_ctx)
/* Reset before using it. */
drw_state_prepare_clean_for_draw(&DST);
+ BKE_view_layer_ensure_sync(scene, view_layer);
DST.draw_ctx = (DRWContextState){
.region = region,
.rv3d = rv3d,
@@ -1377,6 +1378,7 @@ static void drw_notify_view_update_offscreen(struct Depsgraph *depsgraph,
/* Reset before using it. */
drw_state_prepare_clean_for_draw(&DST);
+ BKE_view_layer_ensure_sync(scene, view_layer);
DST.draw_ctx = (DRWContextState){
.region = region,
.rv3d = rv3d,
@@ -1629,6 +1631,7 @@ void DRW_draw_render_loop_ex(struct Depsgraph *depsgraph,
ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph);
RegionView3D *rv3d = region->regiondata;
+ BKE_view_layer_ensure_sync(scene, view_layer);
DST.draw_ctx.evil_C = evil_C;
DST.draw_ctx = (DRWContextState){
.region = region,
@@ -2143,6 +2146,7 @@ void DRW_draw_render_loop_2d_ex(struct Depsgraph *depsgraph,
Scene *scene = DEG_get_evaluated_scene(depsgraph);
ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph);
+ BKE_view_layer_ensure_sync(scene, view_layer);
DST.draw_ctx.evil_C = evil_C;
DST.draw_ctx = (DRWContextState){
.region = region,
@@ -2349,6 +2353,8 @@ void DRW_draw_select_loop(struct Depsgraph *depsgraph,
Scene *scene = DEG_get_evaluated_scene(depsgraph);
RenderEngineType *engine_type = ED_view3d_engine_type(scene, v3d->shading.type);
ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph);
+
+ BKE_view_layer_ensure_sync(scene, view_layer);
Object *obact = BKE_view_layer_active_object_get(view_layer);
Object *obedit = use_obedit_skip ? NULL : OBEDIT_FROM_OBACT(obact);
#ifndef USE_GPU_SELECT
@@ -2580,6 +2586,7 @@ static void drw_draw_depth_loop_impl(struct Depsgraph *depsgraph,
DST.options.is_depth = true;
/* Instead of 'DRW_context_state_init(C, &DST.draw_ctx)', assign from args */
+ BKE_view_layer_ensure_sync(scene, view_layer);
DST.draw_ctx = (DRWContextState){
.region = region,
.rv3d = rv3d,
@@ -2713,6 +2720,7 @@ void DRW_draw_select_id(Depsgraph *depsgraph, ARegion *region, View3D *v3d, cons
drw_state_prepare_clean_for_draw(&DST);
/* Instead of 'DRW_context_state_init(C, &DST.draw_ctx)', assign from args */
+ BKE_view_layer_ensure_sync(scene, view_layer);
DST.draw_ctx = (DRWContextState){
.region = region,
.rv3d = region->regiondata,
diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c
index dbc478f7a27..ce1c95bc4ca 100644
--- a/source/blender/editors/animation/anim_filter.c
+++ b/source/blender/editors/animation/anim_filter.c
@@ -118,10 +118,12 @@ static void animedit_get_yscale_factor(bAnimContext *ac)
/* NOTE: there's a similar function in key.c #BKE_key_from_object. */
static Key *actedit_get_shapekeys(bAnimContext *ac)
{
+ Scene *scene = ac->scene;
ViewLayer *view_layer = ac->view_layer;
Object *ob;
Key *key;
+ BKE_view_layer_ensure_sync(scene, view_layer);
ob = BKE_view_layer_active_object_get(view_layer);
if (ob == NULL) {
return NULL;
diff --git a/source/blender/editors/armature/pose_select.c b/source/blender/editors/armature/pose_select.c
index 672e1e776dd..07ed4c61de2 100644
--- a/source/blender/editors/armature/pose_select.c
+++ b/source/blender/editors/armature/pose_select.c
@@ -269,9 +269,12 @@ bool ED_armature_pose_select_pick_with_buffer(const Scene *scene,
return ED_armature_pose_select_pick_bone(scene, view_layer, v3d, ob, nearBone, params);
}
-void ED_armature_pose_select_in_wpaint_mode(ViewLayer *view_layer, Base *base_select)
+void ED_armature_pose_select_in_wpaint_mode(const Scene *scene,
+ ViewLayer *view_layer,
+ Base *base_select)
{
BLI_assert(base_select && (base_select->object->type == OB_ARMATURE));
+ BKE_view_layer_ensure_sync(scene, view_layer);
Object *ob_active = BKE_view_layer_active_object_get(view_layer);
BLI_assert(ob_active && (ob_active->mode & OB_MODE_ALL_WEIGHT_PAINT));
diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c
index 35a86767ce1..aaba61debe4 100644
--- a/source/blender/editors/curve/editfont.c
+++ b/source/blender/editors/curve/editfont.c
@@ -628,6 +628,7 @@ static void txt_add_object(bContext *C,
const float rot[3] = {0.0f, 0.0f, 0.0f};
obedit = BKE_object_add(bmain, scene, view_layer, OB_FONT, NULL);
+ BKE_view_layer_ensure_sync(scene, view_layer);
object = BKE_view_layer_active_object_get(view_layer);
/* seems to assume view align ? TODO: look into this, could be an operator option. */
diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h
index e74ecdb1202..8e7f728a3e7 100644
--- a/source/blender/editors/include/ED_armature.h
+++ b/source/blender/editors/include/ED_armature.h
@@ -340
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list