gfx: Update Azure and Skia, and rewrite broken clipping logic.

This exposed some problems in our clipping logic, which was never
properly rewritten for the stacking context reform. The clipping code
worked in terms of a stack of clips, but the new stacking context code
has no concept of a stack of clip regions. Fixing that in turn exposed
some flaky/incorrect tests:

* `borders` had an incorrect reference image, as far as I can tell.

* `negative_margins` had some stray pixels, fixed by changing the text.
This commit is contained in:
Patrick Walton 2014-12-05 03:55:39 -08:00
parent 368d6dc6bf
commit 1d845ee4f2
7 changed files with 71 additions and 61 deletions

View file

@ -509,6 +509,7 @@ impl WorkerThread {
font_ctx: &mut self.font_context,
page_rect: tile.page_rect,
screen_rect: tile.screen_rect,
transient_clip_rect: None,
};
// Apply the translation to paint the tile we want.
@ -518,18 +519,15 @@ impl WorkerThread {
let matrix = matrix.translate(-tile_bounds.origin.x as AzFloat,
-tile_bounds.origin.y as AzFloat);
paint_context.draw_target.set_transform(&matrix);
// Clear the buffer.
paint_context.clear();
// Draw the display list.
profile(time::PaintingPerTileCategory, None, self.time_profiler_sender.clone(), || {
let mut clip_stack = Vec::new();
stacking_context.optimize_and_draw_into_context(&mut paint_context,
&tile.page_rect,
&matrix,
&mut clip_stack);
None);
paint_context.draw_target.flush();
});
}