[Bf-blender-cvs] [1129fd1c51e] blender2.8: Use better workaround ofr getting scene layer for Derivedmesh's mask

Sergey Sharybin noreply at git.blender.org
Tue Apr 18 15:06:43 CEST 2017


Commit: 1129fd1c51e59d63e2f9a9b31cd2e873fef17b37
Author: Sergey Sharybin
Date:   Tue Apr 18 14:55:31 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB1129fd1c51e59d63e2f9a9b31cd2e873fef17b37

Use better workaround ofr getting scene layer for Derivedmesh's mask

This replaces access to the first scene layer (which was wrong) with a linear
lookup of scene layer by it's active index.

This seems to be a better temporary solution to have things working for until
we've got proper workspace, depsgraph and it's per-layer storage in place.

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

M	source/blender/blenkernel/BKE_layer.h
M	source/blender/blenkernel/intern/DerivedMesh.c
M	source/blender/blenkernel/intern/layer.c

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

diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index da4f1a94042..2cd11db1699 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -58,7 +58,7 @@ struct SceneCollection;
 struct SceneLayer;
 
 struct SceneLayer *BKE_scene_layer_render_active(const struct Scene *scene);
-struct SceneLayer *BKE_scene_layer_context_active(struct Scene *scene);
+struct SceneLayer *BKE_scene_layer_context_active(const struct Scene *scene);
 struct SceneLayer *BKE_scene_layer_add(struct Scene *scene, const char *name);
 
 bool BKE_scene_layer_remove(struct Main *bmain, struct Scene *scene, struct SceneLayer *sl);
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 40c16f5fbff..454c1586ef3 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -54,6 +54,7 @@
 #include "BKE_cdderivedmesh.h"
 #include "BKE_editmesh.h"
 #include "BKE_key.h"
+#include "BKE_layer.h"
 #include "BKE_library.h"
 #include "BKE_material.h"
 #include "BKE_modifier.h"
@@ -2677,7 +2678,8 @@ static void editbmesh_build_data(Scene *scene, Object *obedit, BMEditMesh *em, C
 
 static CustomDataMask object_get_datamask(const Scene *scene, Object *ob, bool *r_need_mapping)
 {
-	SceneLayer *sl = scene->render_layers.first; /* XXX TODO pass SceneLayer to this function */
+	/* TODO(sergey): Avoid this linear list lookup. */
+	SceneLayer *sl = BKE_scene_layer_context_active(scene);
 	Object *actob = sl->basact ? sl->basact->object : NULL;
 	CustomDataMask mask = ob->customdata_mask;
 
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index a160bdb0df1..6107b6ca12b 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -78,7 +78,7 @@ SceneLayer *BKE_scene_layer_render_active(const Scene *scene)
  * Returns the SceneLayer to be used for drawing, outliner, and
  * other context related areas.
  */
-SceneLayer *BKE_scene_layer_context_active(Scene *scene)
+SceneLayer *BKE_scene_layer_context_active(const Scene *scene)
 {
 	/* waiting for workspace to get the layer from context*/
 	TODO_LAYER_CONTEXT;




More information about the Bf-blender-cvs mailing list