// Clean collected dirty/damaged rects on exit if 3d layer or 3d node or other conditions.
DamagedRectsCleaner damagedRectCleaner(damagedRects, surfaceRect);
+ bool cleanDamagedRect = false;
// Mark previous dirty rects in the sorted array. The array is already sorted by node and renderer, frame number.
// so you don't need to sort: std::stable_sort(itemsDirtyRects.begin(), itemsDirtyRects.end());
// If the item does 3D transformation, do early exit and clean the damaged rect array
if(item.mUpdateArea == Vector4::ZERO)
{
- return;
+ cleanDamagedRect = true;
+ continue;
}
Rect<int> rect;
{
dirtyRectPos->visited = true;
}
+ else
+ {
+ // The item is not in the list for some reason. Add it!
+ dirtyRectPos->visited = true;
+ itemsDirtyRects.insert(dirtyRectPos, dirtyRect);
+ }
}
}
}
}
itemsDirtyRects.resize(j - itemsDirtyRects.begin());
- damagedRectCleaner.SetCleanOnReturn(false);
+
+ if(!cleanDamagedRect)
+ {
+ damagedRectCleaner.SetCleanOnReturn(false);
+ }
// Reset updated flag from the root
Layer* root = sceneObject->GetRoot();