Merge branch 'blender-v4.5-release'

This commit is contained in:
Christoph Lendenfeld
2025-07-01 14:33:41 +02:00
3 changed files with 13 additions and 0 deletions

View File

@@ -4235,6 +4235,13 @@ void BKE_animsys_eval_driver(Depsgraph *depsgraph, ID *id, int driver_index, FCu
fcu = static_cast<FCurve *>(BLI_findlink(&adt->drivers, driver_index));
}
if (!fcu) {
/* Trying to evaluate a driver that does no longer exist. Potentially missing a call to
* DEG_relations_tag_update. */
BLI_assert_unreachable();
return;
}
DEG_debug_print_eval_subdata_index(
depsgraph, __func__, id->name, id, "fcu", fcu->rna_path, fcu, fcu->array_index);

View File

@@ -398,6 +398,7 @@ static void rna_PoseChannel_constraints_remove(
con_ptr->invalidate();
blender::ed::object::constraint_update(bmain, ob);
DEG_relations_tag_update(bmain);
/* XXX(@ideasman42): is this really needed? */
BKE_constraints_active_set(&pchan->constraints, nullptr);

View File

@@ -236,6 +236,11 @@ class SubDataDriverRemovalTest(AbstractEmptyDriverTest, unittest.TestCase):
self.assertEqual(len(pose_bone.constraints), 1)
arm_ob.driver_add('pose.bones["test"].constraints["test"].distance')
self.assertEqual(len(arm_ob.animation_data.drivers), 1)
# To do a proper test, the depsgraph needs to be evaluated between adding
# the data and removing it. This causes depsgraph nodes to be built, which
# have to be removed as well. See #141243
bpy.context.evaluated_depsgraph_get()
pose_bone.constraints.remove(constraint)
self.assertEqual(len(pose_bone.constraints), 0)
self.assertEqual(len(arm_ob.animation_data.drivers), 0,