Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upFixes a number of race conditions and reliability issues with reftests and compositor. #6031
Conversation
hoppipolla-critic-bot
commented
May 13, 2015
|
Critic review: https://critic.hoppipolla.co.uk/r/4984 This is an external review system which you may optionally use for the code review of your pull request. In order to help critic track your changes, please do not make in-place history rewrites (e.g. via |
|
r? @larsbergstrom (or anyone else who has comments). I haven't been able to repro any intermittent reftest failures with this patch applied, so hopefully it covers all the known issues. Despite being a small-ish patch, this has a lot of subtle fixes - I lost count of the # of edge cases and races that I encountered in the reftests while working through this. I've tried to document it, but I'm sure I missed some parts or could explain bit of it better - please just ask when you run into something that doesn't make sense :) |
|
Reviewed files:
components/compositing/compositor.rs, line 443 [r1] (raw file): components/compositing/compositor.rs, line 741 [r1] (raw file): components/compositing/compositor.rs, line 1117 [r1] (raw file): components/compositing/compositor.rs, line 1149 [r1] (raw file): components/compositing/compositor.rs, line 1170 [r1] (raw file): components/compositing/constellation.rs, line 952 [r1] (raw file): components/compositing/constellation.rs, line 973 [r1] (raw file): Comments from the review on Reviewable.io |
|
I left some comments. The files in script appear correct to me, but it would be best if @jdm or @Ms2ger could take a quick look to ensure there isn't anything missing! Comments from the review on Reviewable.io |
|
components/compositing/compositor.rs, line 443 [r1] (raw file): components/compositing/compositor.rs, line 741 [r1] (raw file): components/compositing/compositor.rs, line 1117 [r1] (raw file): components/compositing/compositor.rs, line 1149 [r1] (raw file): components/compositing/compositor.rs, line 1170 [r1] (raw file): components/compositing/constellation.rs, line 952 [r1] (raw file): components/compositing/constellation.rs, line 973 [r1] (raw file): Comments from the review on Reviewable.io |
|
Reviewed files:
Comments from the review on Reviewable.io |
|
Reviewed files:
components/script/script_task.rs, line 900 [r2] (raw file): components/script/script_task.rs, line 906 [r2] (raw file): components/script_traits/lib.rs, line 66 [r2] (raw file): components/script_traits/lib.rs, line 67 [r2] (raw file): Comments from the review on Reviewable.io |
|
-S-awaiting-review +S-needs-code-changes Comments from the review on Reviewable.io |
|
components/script/script_task.rs, line 900 [r2] (raw file): components/script/script_task.rs, line 906 [r2] (raw file): components/script_traits/lib.rs, line 66 [r2] (raw file): components/script_traits/lib.rs, line 67 [r2] (raw file): Comments from the review on Reviewable.io |
|
-S-awaiting-review +S-needs-squash Reviewed files:
Comments from the review on Reviewable.io |
|
Squashed |
|
@bors-servo: r=larsberg,jdm |
|
|
The basic idea is it's safe to output an image for reftest by testing:
- That the compositor doesn't have any animations active.
- That the compositor is not waiting on any outstanding paint messages to arrive.
- That the script tasks are "idle" and therefore won't cause reflow.
- This currently means page loaded, onload fired, reftest-wait not active, first reflow triggered.
- It could easily be expanded to handle pending timers etc.
- That the "epoch" that the layout tasks have last laid out after script went idle, is reflected by the compositor in all visible layers for that pipeline.
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6031)
<!-- Reviewable:end -->
|
|
…s and compositor.
The basic idea is it's safe to output an image for reftest by testing:
- That the compositor doesn't have any animations active.
- That the compositor is not waiting on any outstanding paint messages to arrive.
- That the script tasks are "idle" and therefore won't cause reflow.
- This currently means page loaded, onload fired, reftest-wait not active, first reflow triggered.
- It could easily be expanded to handle pending timers etc.
- That the "epoch" that the layout tasks have last laid out after script went idle, is reflected by the compositor in all visible layers for that pipeline.
|
@bors-servo: r=larsberg,jdm |
|
|
The basic idea is it's safe to output an image for reftest by testing:
- That the compositor doesn't have any animations active.
- That the compositor is not waiting on any outstanding paint messages to arrive.
- That the script tasks are "idle" and therefore won't cause reflow.
- This currently means page loaded, onload fired, reftest-wait not active, first reflow triggered.
- It could easily be expanded to handle pending timers etc.
- That the "epoch" that the layout tasks have last laid out after script went idle, is reflected by the compositor in all visible layers for that pipeline.
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6031)
<!-- Reviewable:end -->
glennw commentedMay 13, 2015
The basic idea is it's safe to output an image for reftest by testing: