Page MenuHome

Fix T78835: Ghosting audio after using undo
AbandonedPublic

Authored by Sergey Sharybin (sergey) on Jul 29 2020, 12:30 PM.

Details

Summary

The root of the issue comes to the fact that sub-data pointers were
used to match strips before/after copy-on-write. The undo system might
re-use sub-data pointers after re-allocating them, making it so that,
for example, pointer used by sound strip is later re-used by video
strip.

This change makes it so sub-data pointers are considered invalid and
not usable when ID is changed by the undo system. It does not fix the
case when strips are modified form python script, which might cause
same fiasco. Dealing with the script case requires deeper changes which
are too risky for bcon3.

This is one of the possible approaches, second one will be submitted
soon so that we can choose the most acceptable one (the other possibility
is D8417).

Diff Detail

Repository
rB Blender
Branch
fix_T78835_2 (branched from master)
Build Status
Buildable 9228
Build 9228: arc lint + arc unit

Event Timeline

Sergey Sharybin (sergey) requested review of this revision.Jul 29 2020, 12:30 PM
Sergey Sharybin (sergey) created this revision.

TBH I have a hard time deciding which one is best, but I think I would rather go with that one, rather than D8417... Looks somewhat more generic, so 'safer', although probably more 'over-trashing' caches too?

This revision is now accepted and ready to land.Jul 29 2020, 3:08 PM

although probably more 'over-trashing' caches too?

D8416 and D8417 are (or, rather, should be) identical in this regard.

Is more that D8417 has more localized logic: the "bad" happens when backup uses stale orig pointers, so it deals with this on its own side (without asking anyone else to take care of anything).

Correct approach has been implemented with Brecht in D8433.