So digging a bit further, the following happens right before the bug: - we reach a call to `Tile::invalidate` where the `invalidation_rect` is `Some(rect)` (e.g. `Box2D((3456.0, 512.0), (3584.0, 1024.0))`); - in that call we update `self.local_dirty_rect` from `Box2D((0.0, 0.0), (0.0, 0.0))` to `rect` through a union; - in `PicturePrimitive::take_context` we intersect that with `tile.current_descriptor.local_valid_rect` (e.g. `Box2D((3072.0, 512.0), (3456.0, 1024.0))`); - but the intersection is empty so `self.local_dirty_rect` is now `PictureRect::zero`, leading to a second empty intersection in the computation from comment 10. I'll try to continue to track this, e.g. figure out which call to `Tile::invalidate` is involved here.
Bug 1893205 Comment 12 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
So digging a bit further, the following happens right before the bug: - we reach a call to `Tile::invalidate` where the `invalidation_rect` is `Some(rect)` (e.g. `Box2D((3456.0, 512.0), (3584.0, 1024.0))`); - in that call we update `self.local_dirty_rect` from `Box2D((0.0, 0.0), (0.0, 0.0))` to `rect` through a union; - in `PicturePrimitive::take_context` we intersect that with `tile.current_descriptor.local_valid_rect` (e.g. `Box2D((3072.0, 512.0), (3456.0, 1024.0))`); - but the intersection is empty so `self.local_dirty_rect` is now `PictureRect::zero()`, leading to a second empty intersection in the computation from comment 10. I'll try to continue to track this, e.g. figure out which call to `Tile::invalidate` is involved here.