diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2018-04-24 01:14:20 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-24 01:14:20 -0400 |
commit | a27c62717ee429348d5cc9b7b816dee56dff2f2f (patch) | |
tree | 87094408a23a972c97ec88f6bceabb21ed9e53cb /components/script/dom/client.rs | |
parent | c5f7c9ccf33fac4bf2c1750e7040b76216fc912c (diff) | |
parent | f3065f370723566b570625dead7042f4cd553b74 (diff) | |
download | servo-a27c62717ee429348d5cc9b7b816dee56dff2f2f.tar.gz servo-a27c62717ee429348d5cc9b7b816dee56dff2f2f.zip |
Auto merge of #20680 - Brody-Eastwood:master, r=emilio
Moved Canvas rendering to a single thread.
<!-- Please describe your changes on the following line: -->
Implements the "Subsequent Steps" part of the [NCSU Canvas rendering project.](https://github.com/servo/servo/wiki/Canvas-rendering-project)
I moved most of the functionality from CanvasPaintThread to CanvasData, so CanvasPaintThread essentially just pulls the info out of the message and calls a method on a particular CanvasData element.
I ran into some awkwardness with the fact that one can only take a single mutable reference from a hashmap, though. DrawImageInOther is not really possible to do with only one reference at a time, so it awkwardly still lives in CanvasPaintThread, basically. I also would've preferred to take the reference at the top as soon as I get the CanvasId, since that looks cleaner than having them all start with "canvas_paint_thread.canvases.get_mut[&canvas_id].unwrap()" but that makes trying to take the second reference for DrawImageInOther fail to compile. I'm definitely open to suggestions on how to make that less gross.
The timed single-canvas drawing improved in performance from around ~2.2ms to around ~1.7ms. Slither.io runs better and doesn't crash, but I'm not having it crash on my copy from before these changes, so I don't know if that's new behavior or not.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach build-geckolib` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #13879 and #10381.
<!-- Either: -->
- [X] There are tests for these changes (added in the initial steps)
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20680)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/client.rs')
0 files changed, 0 insertions, 0 deletions