Commit: 819607a30477ffd49942c0a27cb3bb03a5eef26a
Author: Julian Eisel
Date:   Sat Dec 2 02:46:55 2017 +0100
Branches: temp-workspace_active_object
https://developer.blender.org/rB819607a30477ffd49942c0a27cb3bb03a5eef26a

Avoid getting active object from view-layer in a whole bunch of cases

Instead get it from context (which again gets it from workspace)

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

M       release/scripts/startup/bl_ui/space_info.py
M       source/blender/blenkernel/BKE_paint.h
M       source/blender/blenkernel/BKE_particle.h
M       source/blender/blenkernel/intern/DerivedMesh.c
M       source/blender/blenkernel/intern/context.c
M       source/blender/blenkernel/intern/paint.c
M       source/blender/blenkernel/intern/particle.c
M       source/blender/blenkernel/intern/particle_system.c
M       source/blender/depsgraph/DEG_depsgraph.h
M       source/blender/depsgraph/intern/depsgraph_eval.cc
M       source/blender/draw/intern/draw_armature.c
M       source/blender/draw/intern/draw_common.c
M       source/blender/draw/intern/draw_common.h
M       source/blender/draw/intern/draw_view.c
M       source/blender/draw/modes/object_mode.c
M       source/blender/editors/armature/armature_select.c
M       source/blender/editors/armature/editarmature_sketch.c
M       source/blender/editors/curve/editcurve.c
M       source/blender/editors/gpencil/drawgpencil.c
M       source/blender/editors/gpencil/gpencil_utils.c
M       source/blender/editors/include/ED_gpencil.h
M       source/blender/editors/include/ED_info.h
M       source/blender/editors/include/ED_transform_snap_object_context.h
M       source/blender/editors/interface/interface_handlers.c
M       source/blender/editors/mesh/editmesh_tools.c
M       source/blender/editors/object/object_edit.c
M       source/blender/editors/object/object_hook.c
M       source/blender/editors/render/render_update.c
M       source/blender/editors/sculpt_paint/paint_utils.c
M       source/blender/editors/space_buttons/buttons_context.c
M       source/blender/editors/space_info/info_stats.c
M       source/blender/editors/space_view3d/drawobject.c
M       source/blender/editors/space_view3d/view3d_draw.c
M       source/blender/editors/space_view3d/view3d_draw_legacy.c
M       source/blender/editors/space_view3d/view3d_intern.h
M       source/blender/editors/space_view3d/view3d_manipulator_ruler.c
M       source/blender/editors/space_view3d/view3d_ruler.c
M       source/blender/editors/space_view3d/view3d_walk.c
M       source/blender/editors/transform/transform.h
M       source/blender/editors/transform/transform_conversions.c
M       source/blender/editors/transform/transform_generics.c
M       source/blender/editors/transform/transform_snap.c
M       source/blender/editors/transform/transform_snap_object.c
M       source/blender/makesrna/intern/rna_brush.c
M       source/blender/makesrna/intern/rna_scene.c
M       source/blender/makesrna/intern/rna_scene_api.c
M       source/blender/makesrna/intern/rna_texture.c
M       source/blenderplayer/bad_level_call_stubs/stubs.c

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

diff --git a/release/scripts/startup/bl_ui/space_info.py 
b/release/scripts/startup/bl_ui/space_info.py
index 8c7fcb29ad2..f88b75d573f 100644
--- a/release/scripts/startup/bl_ui/space_info.py
+++ b/release/scripts/startup/bl_ui/space_info.py
@@ -86,7 +86,7 @@ class INFO_HT_header(Header):
             return
 
         row.operator("wm.splash", text="", icon='BLENDER', emboss=False)
-        row.label(text=scene.statistics(context.view_layer), translate=False)
+        row.label(text=scene.statistics(context.view_layer, 
context.active_object), translate=False)
 
 
 class INFO_MT_editor_menus(Menu):
diff --git a/source/blender/blenkernel/BKE_paint.h 
b/source/blender/blenkernel/BKE_paint.h
index 31f4695201c..5ac783d4eb7 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -91,8 +91,12 @@ typedef enum eOverlayControlFlags {
                                                     
PAINT_OVERLAY_OVERRIDE_PRIMARY | \
                                                     
PAINT_OVERLAY_OVERRIDE_CURSOR)
 
-void BKE_paint_invalidate_overlay_tex(struct Scene *scene, struct ViewLayer 
*view_layer, const struct Tex *tex);
-void BKE_paint_invalidate_cursor_overlay(struct Scene *scene, struct ViewLayer 
*view_layer, struct CurveMapping *curve);
+void BKE_paint_invalidate_overlay_tex(
+        struct Scene *scene, const struct Object *active_object,
+        const struct Tex *tex);
+void BKE_paint_invalidate_cursor_overlay(
+        struct Scene *scene, const struct Object *active_object,
+        struct CurveMapping *curve);
 void BKE_paint_invalidate_overlay_all(void);
 eOverlayControlFlags BKE_paint_get_overlay_flags(void);
 void BKE_paint_reset_overlay_invalid(eOverlayControlFlags flag);
@@ -126,7 +130,7 @@ void BKE_paint_cavity_curve_preset(struct Paint *p, int 
preset);
 
 short BKE_paint_object_mode_from_paint_mode(ePaintMode mode);
 struct Paint *BKE_paint_get_active_from_paintmode(struct Scene *sce, 
ePaintMode mode);
-struct Paint *BKE_paint_get_active(struct Scene *sce, struct ViewLayer 
*view_layer);
+struct Paint *BKE_paint_get_active(struct Scene *sce, const struct Object 
*active_object);
 struct Paint *BKE_paint_get_active_from_context(const struct bContext *C);
 ePaintMode BKE_paintmode_get_active_from_context(const struct bContext *C);
 struct Brush *BKE_paint_brush(struct Paint *paint);
diff --git a/source/blender/blenkernel/BKE_particle.h 
b/source/blender/blenkernel/BKE_particle.h
index 1776872f455..0bba702f5af 100644
--- a/source/blender/blenkernel/BKE_particle.h
+++ b/source/blender/blenkernel/BKE_particle.h
@@ -297,7 +297,7 @@ void psys_set_current_num(Object *ob, int index);
 
 struct LatticeDeformData *psys_create_lattice_deform_data(struct 
ParticleSimulationData *sim);
 
-bool psys_in_edit_mode(struct ViewLayer *view_layer, struct ParticleSystem 
*psys);
+bool psys_in_edit_mode(struct ParticleSystem *psys, struct Object 
*active_object);
 bool psys_check_enabled(struct Object *ob, struct ParticleSystem *psys, const 
bool use_render_params);
 bool psys_check_edited(struct ParticleSystem *psys);
 
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c 
b/source/blender/blenkernel/intern/DerivedMesh.c
index 1367157c13c..23ac9d2e87b 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -77,6 +77,8 @@ static DerivedMesh 
*navmesh_dm_createNavMeshForVisualization(DerivedMesh *dm);
 
 #include "BLI_sys_types.h" /* for intptr_t support */
 
+#include "DEG_depsgraph.h"
+
 #include "GPU_buffers.h"
 #include "GPU_shader.h"
 #include "GPU_immediate.h"
@@ -1149,7 +1151,7 @@ DerivedMesh *mesh_create_derived(Mesh *me, float 
(*vertCos)[3])
 }
 
 DerivedMesh *mesh_create_derived_for_modifier(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob,
         ModifierData *md, int build_shapekey_layers)
 {
        Mesh *me = ob->data;
@@ -1755,7 +1757,7 @@ static void dm_ensure_display_normals(DerivedMesh *dm)
  * - apply deform modifiers and input vertexco
  */
 static void mesh_calc_modifiers(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, 
float (*inputVertexCos)[3],
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, float 
(*inputVertexCos)[3],
         const bool useRenderParams, int useDeform,
         const bool need_mapping, CustomDataMask dataMask,
         const int index, const bool useCache, const bool build_shapekey_layers,
@@ -2310,7 +2312,7 @@ bool editbmesh_modifier_is_enabled(Scene *scene, 
ModifierData *md, DerivedMesh *
 }
 
 static void editbmesh_calc_modifiers(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob,
         BMEditMesh *em, CustomDataMask dataMask,
         /* return args */
         DerivedMesh **r_cage, DerivedMesh **r_final)
@@ -2640,7 +2642,7 @@ static bool calc_modifiers_skip_orco(const 
EvaluationContext *eval_ctx,
 #endif
 
 static void mesh_build_data(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, 
CustomDataMask dataMask,
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, 
CustomDataMask dataMask,
         const bool build_shapekey_layers, const bool need_mapping)
 {
        BLI_assert(ob->type == OB_MESH);
@@ -2677,7 +2679,7 @@ static void mesh_build_data(
 }
 
 static void editbmesh_build_data(
-        const struct EvaluationContext *eval_ctx, Scene *scene,
+        const EvaluationContext *eval_ctx, Scene *scene,
         Object *obedit, BMEditMesh *em, CustomDataMask dataMask)
 {
        BKE_object_free_derived_caches(obedit);
@@ -2704,18 +2706,15 @@ static void editbmesh_build_data(
        BLI_assert(!(em->derivedFinal->dirty & DM_DIRTY_NORMALS));
 }
 
-static CustomDataMask object_get_datamask(const Scene *scene, Object *ob, bool 
*r_need_mapping)
+static CustomDataMask object_get_datamask(Object *ob, bool is_active, bool 
*r_need_mapping)
 {
-       /* TODO(sergey): Avoid this linear list lookup. */
-       ViewLayer *view_layer = 
BKE_view_layer_context_active_PLACEHOLDER(scene);
-       Object *actob = view_layer->basact ? view_layer->basact->object : NULL;
        CustomDataMask mask = ob->customdata_mask;
 
        if (r_need_mapping) {
                *r_need_mapping = false;
        }
 
-       if (ob == actob) {
+       if (is_active) {
                bool editing = BKE_paint_select_face_test(ob);
 
                /* weight paint and face select need original indices because 
of selection buffer drawing */
@@ -2745,11 +2744,11 @@ static CustomDataMask object_get_datamask(const Scene 
*scene, Object *ob, bool *
 }
 
 void makeDerivedMesh(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, 
BMEditMesh *em,
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, 
BMEditMesh *em,
         CustomDataMask dataMask, const bool build_shapekey_layers)
 {
        bool need_mapping;
-       dataMask |= object_get_datamask(scene, ob, &need_mapping);
+       dataMask |= object_get_datamask(ob, ob == eval_ctx->active_object, 
&need_mapping);
 
        if (em) {
                editbmesh_build_data(eval_ctx, scene, ob, em, dataMask);
@@ -2762,13 +2761,13 @@ void makeDerivedMesh(
 /***/
 
 DerivedMesh *mesh_get_derived_final(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, 
CustomDataMask dataMask)
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, 
CustomDataMask dataMask)
 {
        /* if there's no derived mesh or the last data mask used doesn't include
         * the data we need, rebuild the derived mesh
         */
        bool need_mapping;
-       dataMask |= object_get_datamask(scene, ob, &need_mapping);
+       dataMask |= object_get_datamask(ob, ob == eval_ctx->active_object, 
&need_mapping);
 
        if (!ob->derivedFinal ||
            ((dataMask & ob->lastDataMask) != dataMask) ||
@@ -2781,14 +2780,14 @@ DerivedMesh *mesh_get_derived_final(
        return ob->derivedFinal;
 }
 
-DerivedMesh *mesh_get_derived_deform(const struct EvaluationContext *eval_ctx, 
Scene *scene, Object *ob, CustomDataMask dataMask)
+DerivedMesh *mesh_get_derived_deform(const EvaluationContext *eval_ctx, Scene 
*scene, Object *ob, CustomDataMask dataMask)
 {
        /* if there's no derived mesh or the last data mask used doesn't include
         * the data we need, rebuild the derived mesh
         */
        bool need_mapping;
 
-       dataMask |= object_get_datamask(scene, ob, &need_mapping);
+       dataMask |= object_get_datamask(ob, ob == eval_ctx->active_object, 
&need_mapping);
 
        if (!ob->derivedDeform ||
            ((dataMask & ob->lastDataMask) != dataMask) ||
@@ -2800,7 +2799,7 @@ DerivedMesh *mesh_get_derived_deform(const struct 
EvaluationContext *eval_ctx, S
        return ob->derivedDeform;
 }
 
-DerivedMesh *mesh_create_derived_render(const struct EvaluationContext 
*eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask)
+DerivedMesh *mesh_create_derived_render(const EvaluationContext *eval_ctx, 
Scene *scene, Object *ob, CustomDataMask dataMask)
 {
        DerivedMesh *final;
        
@@ -2811,7 +2810,7 @@ DerivedMesh *mesh_create_derived_render(const struct 
EvaluationContext *eval_ctx
        return final;
 }
 
-DerivedMesh *mesh_create_derived_index_render(const struct EvaluationContext 
*eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask, int index)
+DerivedMesh *mesh_create_derived_index_render(const EvaluationContext 
*eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask, int index)
 {
        DerivedMesh *final;
 
@@ -2823,7 +2822,7 @@ DerivedMesh *mesh_create_derived_index_render(const 
struct EvaluationContext *ev
 }
 
 DerivedMesh *mesh_create_derived_view(
-        const struct EvaluationContext *eval_ctx, Scene *scene,
+        const EvaluationContext *eval_ctx, Scene *scene,
         Object *ob, CustomDataMask dataMask)
 {
        DerivedMesh *final;
@@ -2844,7 +2843,7 @@ DerivedMesh *mesh_create_derived_view(
 }
 
 DerivedMesh *mesh_create_derived_no_deform(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob,
         float (*vertCos)[3], CustomDataMask dataMask)
 {
        DerivedMesh *final;
@@ -2857,7 +2856,7 @@ DerivedMesh *mesh_create_derived_no_deform(
 }
 
 DerivedMesh *mesh_create_derived_no_virtual(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        const E

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to