Bug 1005405 - OverflowChangedTracker::Flush() no longer downgrades parent frames from CHILDREN_AND_PARENT_CHANGED to CHILDREN_CHANGED. r=dbaron

- When OverflowChangedTracker::Flush() coalesces multiple changes
  simultaneously, it was possible to downgrade parent frames from
  CHILDREN_AND_PARENT_CHANGED to CHILDREN_CHANGED, resulting in an incomplete
  update.
- This patch ensures that the strongest ChangeKind is retained when cascading
  up to parent frames.
This commit is contained in:
Kearwood (Kip) Gilbert 2014-05-06 11:23:00 +02:00
parent 523b57b309
commit 637e2ae6d5

View File

@ -166,7 +166,7 @@ public:
if (parent && parent != mSubtreeRoot) {
Entry* parentEntry = mEntryList.find(Entry(parent, entry->mDepth - 1));
if (parentEntry) {
parentEntry->mChangeKind = CHILDREN_CHANGED;
parentEntry->mChangeKind = std::max(parentEntry->mChangeKind, CHILDREN_CHANGED);
} else {
mEntryList.insert(new Entry(parent, entry->mDepth - 1, CHILDREN_CHANGED));
}