Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Store the values that have been synced to the kernel, but are still l…
…isted as changed, so they do not get buffered again to be synced to the kernel. This fixes a problem that comes up when we have a recursive call to .set (for example, when a top-level .set call triggers an event which leads to another .set call), and the state is synced while in this recursive call. In short, the end of every .set call involves copying over the changed attributes to _buffered_state_diff. However, if we’ve already sent the state to the kernel during this recursive .set call (which clears _buffered_state_diff), before this PR we still copied over the state change values another time into _buffered_state_diff. This PR instead keeps track of the last values we have sent to the kernel during a recursive .set call, so that we don’t redundantly copy these values into the buffer again. See #3216 (comment) and the following comments for more notes on this issue.
- Loading branch information