(Based on "findings" from issue 760057 )
It's difficult to keep of SMIL timing/interval state consistent due to how the value are "cached" and those caches invalidated. It should be easier for interval code to make sure timing state is consistent (and react to changes in it by recomputing derived state.)
A rough plan for this work could look like:
1. Make state-revalidation for each "cached" field explicit.
This will essentially mean an audit of the users of Dur(), RepeatDur() et.c and hoisting the "cache valid" checks into the methods that call them, yielding a "validation prologue" for each user. (Methods are preferably renamed here to indicate the behavioral difference.) Methods then use the member variables directly.
2. The "validation prologue" is hoisted out of the methods where it's present.
This can be iterated upon until suitable entry-points are reached. At this point in time, cache validation can probably also move into a new method.
3. (here be handwaving) Trigger general interval (re)computation when state-changes are detected.
4. (future) Subject other timing state (not just currently "cached" state) to a similar treatment.
Comment 1 by sheriffbot@chromium.org
, Sep 3Status: Untriaged (was: Available)