Fix #138793: Grease Pencil: Tag ID update after conv from legacy curves

Converting from legacy curves to grease pencil with "Keep Original"
option enabled can cause the new grease pencil ID to not be evalueated,
leading to an situation where a evaluated grease pencil object would
point to the original legacy curve ID as its object data. This fix added
a depsgraph tag so it ensures the COW ID is the latest.

Pull Request: https://projects.blender.org/blender/blender/pulls/139006
This commit is contained in:
YimingWu
2025-06-02 14:18:52 +02:00
committed by Falk David
parent bc543ec531
commit 1cb20d444e

View File

@@ -3829,6 +3829,11 @@ static Object *convert_curves_legacy_to_grease_pencil(Base &base,
newob->data = grease_pencil;
newob->type = OB_GREASE_PENCIL;
/* For some reason this must be called, otherwise evaluated id_cow will still be the original
* curves id (and that seems to only happen if "Keep Original" is enabled, and only with this
* specific conversion combination), not sure why. Ref: #138793 */
DEG_id_tag_update(&grease_pencil->id, ID_RECALC_GEOMETRY);
BKE_id_free(nullptr, curves_nomain);
return newob;