[Bf-blender-cvs] [7488ee4239d] temp-T73411-view-layer-lazy-cache: Added ensure.
Jeroen Bakker
noreply at git.blender.org
Mon Sep 5 20:44:39 CEST 2022
Commit: 7488ee4239d080bc6f48959736cc3f786ae5e2cf
Author: Jeroen Bakker
Date: Sat Sep 3 22:58:05 2022 +0200
Branches: temp-T73411-view-layer-lazy-cache
https://developer.blender.org/rB7488ee4239d080bc6f48959736cc3f786ae5e2cf
Added ensure.
===================================================================
M source/blender/blenkernel/BKE_collection.h
M source/blender/blenkernel/BKE_collision.h
M source/blender/blenkernel/BKE_effect.h
M source/blender/blenkernel/BKE_layer.h
M source/blender/blenkernel/BKE_object.h
M source/blender/blenkernel/BKE_scene.h
M source/blender/blenkernel/intern/blender_copybuffer.c
M source/blender/blenkernel/intern/collection.c
M source/blender/blenkernel/intern/collision.c
M source/blender/blenkernel/intern/effect.c
M source/blender/blenkernel/intern/fluid.c
M source/blender/blenkernel/intern/layer.c
M source/blender/blenkernel/intern/layer_utils.c
M source/blender/blenkernel/intern/mball.cc
M source/blender/blenkernel/intern/object.cc
M source/blender/blenkernel/intern/scene.cc
M source/blender/depsgraph/intern/depsgraph_physics.cc
M source/blender/editors/animation/anim_filter.c
M source/blender/editors/animation/anim_markers.c
M source/blender/editors/armature/editarmature_undo.c
M source/blender/editors/gpencil/gpencil_ops_versioning.c
M source/blender/editors/object/object_add.cc
M source/blender/editors/object/object_edit.c
M source/blender/editors/object/object_modes.c
M source/blender/editors/object/object_relations.c
M source/blender/editors/screen/screen_edit.c
M source/blender/editors/space_info/info_stats.cc
M source/blender/editors/space_outliner/outliner_select.cc
M source/blender/editors/space_view3d/space_view3d.c
M source/blender/editors/space_view3d/view3d_navigate.c
M source/blender/editors/space_view3d/view3d_view.c
M source/blender/editors/transform/transform_convert_object.c
M source/blender/io/alembic/intern/alembic_capi.cc
M source/blender/io/collada/DocumentImporter.cpp
M source/blender/io/collada/collada.cpp
M source/blender/io/stl/importer/stl_import.cc
M source/blender/io/usd/intern/usd_capi_import.cc
M source/blender/io/wavefront_obj/importer/obj_importer.cc
M source/blender/makesrna/intern/rna_layer.c
M source/blender/makesrna/intern/rna_space.c
M source/blender/render/intern/pipeline.cc
M source/blender/windowmanager/intern/wm_files_link.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_collection.h b/source/blender/blenkernel/BKE_collection.h
index 4346c2a3d23..19dbee38f36 100644
--- a/source/blender/blenkernel/BKE_collection.h
+++ b/source/blender/blenkernel/BKE_collection.h
@@ -216,7 +216,8 @@ struct ListBase BKE_collection_object_cache_get(struct Collection *collection);
ListBase BKE_collection_object_cache_instanced_get(struct Collection *collection);
void BKE_collection_object_cache_free(struct Collection *collection);
-struct Base *BKE_collection_or_layer_objects(const struct ViewLayer *view_layer,
+struct Base *BKE_collection_or_layer_objects(const struct Scene *scene,
+ struct ViewLayer *view_layer,
struct Collection *collection);
/* Editing. */
diff --git a/source/blender/blenkernel/BKE_collision.h b/source/blender/blenkernel/BKE_collision.h
index b93babaaefa..846609fcb10 100644
--- a/source/blender/blenkernel/BKE_collision.h
+++ b/source/blender/blenkernel/BKE_collision.h
@@ -128,6 +128,7 @@ typedef struct CollisionRelation {
* lookup of colliders during evaluation.
*/
struct ListBase *BKE_collision_relations_create(struct Depsgraph *depsgraph,
+ const struct Scene *scene,
struct Collection *collection,
unsigned int modifier_type);
void BKE_collision_relations_free(struct ListBase *relations);
diff --git a/source/blender/blenkernel/BKE_effect.h b/source/blender/blenkernel/BKE_effect.h
index 113f9ac3b4c..3226455a183 100644
--- a/source/blender/blenkernel/BKE_effect.h
+++ b/source/blender/blenkernel/BKE_effect.h
@@ -103,6 +103,7 @@ void BKE_partdeflect_free(struct PartDeflect *pd);
* lookup of effectors during evaluation.
*/
struct ListBase *BKE_effector_relations_create(struct Depsgraph *depsgraph,
+ const struct Scene *scene,
struct ViewLayer *view_layer,
struct Collection *collection);
void BKE_effector_relations_free(struct ListBase *lb);
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index 3ca75a2bfeb..2f33fd6e63e 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -78,7 +78,9 @@ void BKE_view_layer_free_ex(struct ViewLayer *view_layer, bool do_id_user);
/**
* Tag all the selected objects of a render-layer.
*/
-void BKE_view_layer_selected_objects_tag(struct ViewLayer *view_layer, int tag);
+void BKE_view_layer_selected_objects_tag(const struct Scene *scene,
+ struct ViewLayer *view_layer,
+ int tag);
/**
* Fallback for when a Scene has no camera to use.
@@ -87,14 +89,14 @@ void BKE_view_layer_selected_objects_tag(struct ViewLayer *view_layer, int tag);
* If rendering you pass the scene active layer, when viewing in the viewport
* you want to get #ViewLayer from context.
*/
-struct Object *BKE_view_layer_camera_find(struct ViewLayer *view_layer);
+struct Object *BKE_view_layer_camera_find(const struct Scene *scene, struct ViewLayer *view_layer);
/**
* Find the #ViewLayer a #LayerCollection belongs to.
*/
struct ViewLayer *BKE_view_layer_find_from_collection(const struct Scene *scene,
struct LayerCollection *lc);
struct Base *BKE_view_layer_base_find(struct ViewLayer *view_layer, struct Object *ob);
-void BKE_view_layer_base_deselect_all(struct ViewLayer *view_layer);
+void BKE_view_layer_base_deselect_all(const struct Scene *scene, struct ViewLayer *view_layer);
void BKE_view_layer_base_select_and_set_active(struct ViewLayer *view_layer, struct Base *selbase);
@@ -161,7 +163,9 @@ void BKE_scene_collection_sync(const struct Scene *scene);
* and on file loaded in case linked data changed or went missing.
*/
void BKE_layer_collection_sync(const struct Scene *scene, struct ViewLayer *view_layer);
-void BKE_layer_collection_local_sync(struct ViewLayer *view_layer, const struct View3D *v3d);
+void BKE_layer_collection_local_sync(const struct Scene *scene,
+ struct ViewLayer *view_layer,
+ const struct View3D *v3d);
/**
* Sync the local collection for all the 3D Viewports.
*/
@@ -226,7 +230,8 @@ void BKE_layer_collection_isolate_global(struct Scene *scene,
*
* Same as #BKE_layer_collection_isolate_local but for a viewport
*/
-void BKE_layer_collection_isolate_local(struct ViewLayer *view_layer,
+void BKE_layer_collection_isolate_local(const struct Scene *scene,
+ struct ViewLayer *view_layer,
const struct View3D *v3d,
struct LayerCollection *lc,
bool extend);
@@ -256,7 +261,9 @@ void BKE_layer_eval_view_layer_indexed(struct Depsgraph *depsgraph,
/* .blend file I/O */
-void BKE_view_layer_blend_write(struct BlendWriter *writer, struct ViewLayer *view_layer);
+void BKE_view_layer_blend_write(struct BlendWriter *writer,
+ const struct Scene *scene,
+ struct ViewLayer *view_layer);
void BKE_view_layer_blend_read_data(struct BlendDataReader *reader, struct ViewLayer *view_layer);
void BKE_view_layer_blend_read_lib(struct BlendLibReader *reader,
struct Library *lib,
@@ -421,10 +428,11 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter);
} \
((void)0)
-#define FOREACH_OBJECT_BEGIN(view_layer, _instance) \
+#define FOREACH_OBJECT_BEGIN(scene, view_layer, _instance) \
{ \
Object *_instance; \
Base *_base; \
+ BKE_view_layer_ensure_sync(scene, view_layer); \
for (_base = (Base *)BKE_view_layer_object_bases_get(view_layer, __func__)->first; _base; \
_base = _base->next) { \
_instance = _base->object;
@@ -554,7 +562,7 @@ struct LayerCollection *BKE_view_layer_active_collection_get(struct ViewLayer *v
const char *name);
void BKE_view_layer_tag_out_of_sync(struct ViewLayer *view_layer);
-void BKE_view_layer_ensure_sync(struct Scene *scene, struct ViewLayer *view_layer);
+void BKE_view_layer_ensure_sync(const struct Scene *scene, struct ViewLayer *view_layer);
// This should not exist in the final solution.
const struct ListBase *BKE_view_layer_object_bases_get_const(const struct ViewLayer *view_layer,
const char *name);
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index 17a2a81c9d3..c64156b2fc3 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -201,6 +201,7 @@ struct Object *BKE_object_add_from(struct Main *bmain,
* assigning it to the object.
*/
struct Object *BKE_object_add_for_data(struct Main *bmain,
+ const struct Scene *scene,
struct ViewLayer *view_layer,
int type,
const char *name,
@@ -613,7 +614,8 @@ typedef enum eObjectSet {
* If #OB_SET_VISIBLE or#OB_SET_SELECTED are collected,
* then also add related objects according to the given \a includeFilter.
*/
-struct LinkNode *BKE_object_relational_superset(struct ViewLayer *view_layer,
+struct LinkNode *BKE_object_relational_superset(const struct Scene *scene,
+ struct ViewLayer *view_layer,
eObjectSet objectSet,
eObRelationTypes includeFilter);
/**
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index 61fc883fe7f..c6ccd4493fe 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -97,7 +97,7 @@ int BKE_scene_base_iter_next(struct Depsgraph *depsgraph,
struct Base **base,
struct Object **ob);
-void BKE_scene_base_flag_to_objects(struct ViewLayer *view_layer);
+void BKE_scene_base_flag_to_objects(const struct Scene *scene, struct ViewLayer *view_layer);
/**
* Synchronize object base flags
*
diff --git a/source/blender/blenkernel/intern/blender_copybuffer.c b/source/blender/blenkernel/intern/blender_copybuffer.c
index 4b507beb6b3..82df2714a71 100644
--- a/source/blender/blenkernel/intern/blender_copybuffer.c
+++ b/source/blender/blenkernel/intern/blender_copybuffer.c
@@ -150,7 +150,7 @@ int BKE_copybuffer_paste(bContext *C,
return 0;
}
- BKE_view_layer_base_deselect_all(view_layer);
+ BKE_view_layer_base_deselect_all(scene, view_layer);
copybuffer_append(lapp_context, bmain, reports);
diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c
index dfe88159d80..282df35af6b 100644
--- a/source/blender/blenkernel/intern/collection.c
+++ b/source/blender/blenkernel/intern/collection.c
@@ -845,12 +845,12 @@ void BKE_collection_object_cache_free(Collection *collection)
collection_object_cache_free(collection);
}
-Base *BKE_collection_or_layer_objects(const ViewLayer *view_layer, Collection *collection)
+Base *BKE_collection_or_layer_objects(const Scene *scene, ViewLayer *view_layer, Collection *collection)
{
if (collection) {
return BKE_collection_object_cache_get(collection).first;
}
-
+ BKE_view_layer_ensure_sync(scene, view_layer);
return BKE_view_layer_object_bases_get(view_layer, __func__)->first;
}
diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c
index ae99f0d17df..01c6aea8024 100644
--- a/source/blender/blenkernel/intern/collision.c
+++ b/source/blender/blenkerne
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list