diff --git a/extern/hipew/src/hipew.c b/extern/hipew/src/hipew.c index 7cafe7727f5..c8d02fb9d00 100644 --- a/extern/hipew/src/hipew.c +++ b/extern/hipew/src/hipew.c @@ -253,7 +253,10 @@ static int hipewHipInit(void) { /* Default installation path. */ const char *hip_paths[] = {"", NULL}; #else - const char *hip_paths[] = {"libamdhip64.so", "/opt/rocm/hip/lib/libamdhip64.so", NULL}; + const char *hip_paths[] = {"libamdhip64.so.5", + "/opt/rocm/hip/lib/libamdhip64.so.5", + "libamdhip64.so", + "/opt/rocm/hip/lib/libamdhip64.so", NULL}; #endif static int initialized = 0; static int result = 0; diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py b/release/scripts/startup/bl_ui/properties_data_mesh.py index e0a2c246d6d..76b9028bfe1 100644 --- a/release/scripts/startup/bl_ui/properties_data_mesh.py +++ b/release/scripts/startup/bl_ui/properties_data_mesh.py @@ -128,7 +128,7 @@ class MESH_UL_shape_keys(UIList): row = split.row(align=True) row.emboss = 'NONE_OR_STATUS' if key_block.mute or (obj.mode == 'EDIT' and not (obj.use_shape_key_edit_mode and obj.type == 'MESH')): - row.active = False + split.active = False if not item.id_data.use_relative: row.prop(key_block, "frame", text="") elif index > 0: diff --git a/source/blender/blenkernel/BKE_rigidbody.h b/source/blender/blenkernel/BKE_rigidbody.h index 9c4bb01c22a..44d60abeeb0 100644 --- a/source/blender/blenkernel/BKE_rigidbody.h +++ b/source/blender/blenkernel/BKE_rigidbody.h @@ -92,7 +92,9 @@ struct RigidBodyCon *BKE_rigidbody_create_constraint(struct Scene *scene, /** * Ensure newly set collections' objects all have required data. */ -void BKE_rigidbody_objects_collection_validate(struct Scene *scene, struct RigidBodyWorld *rbw); +void BKE_rigidbody_objects_collection_validate(struct Main *bmain, + struct Scene *scene, + struct RigidBodyWorld *rbw); void BKE_rigidbody_constraints_collection_validate(struct Scene *scene, struct RigidBodyWorld *rbw); diff --git a/source/blender/blenkernel/intern/rigidbody.c b/source/blender/blenkernel/intern/rigidbody.c index e5fb61bfa2f..b39fa1d649b 100644 --- a/source/blender/blenkernel/intern/rigidbody.c +++ b/source/blender/blenkernel/intern/rigidbody.c @@ -1352,7 +1352,7 @@ RigidBodyCon *BKE_rigidbody_create_constraint(Scene *scene, Object *ob, short ty return rbc; } -void BKE_rigidbody_objects_collection_validate(Scene *scene, RigidBodyWorld *rbw) +void BKE_rigidbody_objects_collection_validate(Main *bmain, Scene *scene, RigidBodyWorld *rbw) { if (rbw->group != NULL) { FOREACH_COLLECTION_OBJECT_RECURSIVE_BEGIN (rbw->group, object) { @@ -1360,8 +1360,10 @@ void BKE_rigidbody_objects_collection_validate(Scene *scene, RigidBodyWorld *rbw continue; } object->rigidbody_object = BKE_rigidbody_create_object(scene, object, RBO_TYPE_ACTIVE); + DEG_id_tag_update(&object->id, ID_RECALC_TRANSFORM); } FOREACH_COLLECTION_OBJECT_RECURSIVE_END; + DEG_relations_tag_update(bmain); } } @@ -2360,7 +2362,7 @@ void BKE_rigidbody_rebuild_world(Depsgraph *depsgraph, Scene *scene, float ctime void BKE_rigidbody_do_simulation(Depsgraph *depsgraph, Scene *scene, float ctime) { } -void BKE_rigidbody_objects_collection_validate(Scene *scene, RigidBodyWorld *rbw) +void BKE_rigidbody_objects_collection_validate(Main *bmain, Scene *scene, RigidBodyWorld *rbw) { } void BKE_rigidbody_constraints_collection_validate(Scene *scene, RigidBodyWorld *rbw) diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c index 879dd2b1852..ae18a18fab0 100644 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@ -1543,7 +1543,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain) continue; } - BKE_rigidbody_objects_collection_validate(scene, rbw); + BKE_rigidbody_objects_collection_validate(bmain, scene, rbw); BKE_rigidbody_constraints_collection_validate(scene, rbw); } } diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index f665ec27b07..c1e81d9f3b0 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -5520,7 +5520,7 @@ void ANIM_channel_draw_widgets(const bContext *C, &ptr, prop, array_index, - "", + RNA_property_type(prop) == PROP_ENUM ? NULL : "", ICON_NONE, offset, rect->ymin, diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 8b49f5499f2..23ebb61bb11 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -1849,8 +1849,9 @@ static int move_to_collection_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - if (ID_IS_OVERRIDE_LIBRARY(collection)) { - BKE_report(op->reports, RPT_ERROR, "Cannot add objects to a library override collection"); + if (ID_IS_LINKED(collection) || ID_IS_OVERRIDE_LIBRARY(collection)) { + BKE_report( + op->reports, RPT_ERROR, "Cannot add objects to a library override or linked collection"); return OPERATOR_CANCELLED; } diff --git a/source/blender/editors/sculpt_paint/paint_vertex.cc b/source/blender/editors/sculpt_paint/paint_vertex.cc index 6dc8375bb0d..89b8ba1ec95 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.cc +++ b/source/blender/editors/sculpt_paint/paint_vertex.cc @@ -3686,6 +3686,7 @@ static void vpaint_paint_leaves(bContext *C, switch ((eBrushVertexPaintTool)brush->vertexpaint_tool) { case VPAINT_TOOL_AVERAGE: calculate_average_color(vpd, ob, me, brush, lcol, nodes, totnode); + vpaint_do_draw(C, sd, vp, vpd, ob, me, nodes, totnode, lcol); break; case VPAINT_TOOL_DRAW: vpaint_do_draw(C, sd, vp, vpd, ob, me, nodes, totnode, lcol); diff --git a/source/blender/editors/space_outliner/outliner_tools.cc b/source/blender/editors/space_outliner/outliner_tools.cc index dfe6d4b68b3..1dcffdde38c 100644 --- a/source/blender/editors/space_outliner/outliner_tools.cc +++ b/source/blender/editors/space_outliner/outliner_tools.cc @@ -625,20 +625,22 @@ static const EnumPropertyItem prop_scene_op_types[] = { static bool outliner_do_scene_operation( bContext *C, + SpaceOutliner *space_outliner, eOutliner_PropSceneOps event, - ListBase *lb, bool (*operation_fn)(bContext *, eOutliner_PropSceneOps, TreeElement *, TreeStoreElem *)) { bool success = false; - LISTBASE_FOREACH (TreeElement *, te, lb) { + tree_iterator::all_open(*space_outliner, [&](TreeElement *te) { TreeStoreElem *tselem = TREESTORE(te); if (tselem->flag & TSE_SELECTED) { - if (operation_fn(C, event, te, tselem)) { - success = true; + if ((tselem->type == TSE_SOME_ID) && (te->idcode == ID_SCE)) { + if (operation_fn(C, event, te, tselem)) { + success = true; + } } } - } + }); return success; } @@ -667,7 +669,7 @@ static int outliner_scene_operation_exec(bContext *C, wmOperator *op) SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); const eOutliner_PropSceneOps event = (eOutliner_PropSceneOps)RNA_enum_get(op->ptr, "type"); - if (outliner_do_scene_operation(C, event, &space_outliner->tree, scene_fn) == false) { + if (outliner_do_scene_operation(C, space_outliner, event, scene_fn) == false) { return OPERATOR_CANCELLED; } @@ -1311,8 +1313,10 @@ static void id_override_library_create_hierarchy_process(bContext *C, if (ID_IS_LINKED(id_iter) || !ID_IS_OVERRIDE_LIBRARY_REAL(id_iter)) { continue; } - if (!data.id_hierarchy_roots_uid.contains( - id_iter->override_library->hierarchy_root->session_uuid)) { + if (id_iter->override_library->hierarchy_root != nullptr && + !data.id_hierarchy_roots_uid.contains( + id_iter->override_library->hierarchy_root->session_uuid)) + { continue; } if (data.selected_id_uid.contains(id_iter->override_library->reference->session_uuid) || diff --git a/source/blender/makesrna/intern/rna_rigidbody.c b/source/blender/makesrna/intern/rna_rigidbody.c index 7a499d10d3a..28633d77e12 100644 --- a/source/blender/makesrna/intern/rna_rigidbody.c +++ b/source/blender/makesrna/intern/rna_rigidbody.c @@ -184,7 +184,7 @@ static void rna_RigidBodyWorld_objects_collection_update(Main *bmain, PointerRNA *ptr) { RigidBodyWorld *rbw = (RigidBodyWorld *)ptr->data; - BKE_rigidbody_objects_collection_validate(scene, rbw); + BKE_rigidbody_objects_collection_validate(bmain, scene, rbw); rna_RigidBodyWorld_reset(bmain, scene, ptr); } diff --git a/source/blender/render/intern/multires_bake.c b/source/blender/render/intern/multires_bake.c index e3229e20595..7466acebf92 100644 --- a/source/blender/render/intern/multires_bake.c +++ b/source/blender/render/intern/multires_bake.c @@ -581,11 +581,7 @@ static void do_multires_bake(MultiresBakeRender *bkr, do_multires_bake_thread(&handles[0]); } - /* construct bake result */ - result->height_min = handles[0].height_min; - result->height_max = handles[0].height_max; - - for (i = 1; i < tot_thread; i++) { + for (i = 0; i < tot_thread; i++) { result->height_min = min_ff(result->height_min, handles[i].height_min); result->height_max = max_ff(result->height_max, handles[i].height_max); } @@ -1432,6 +1428,10 @@ static void bake_images(MultiresBakeRender *bkr, MultiresBakeResult *result) { LinkData *link; + /* construct bake result */ + result->height_min = FLT_MAX; + result->height_max = -FLT_MAX; + for (link = bkr->image.first; link; link = link->next) { Image *ima = (Image *)link->data;