mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Auto merge of #10021 - pcwalton:skip-layout-traversals, r=mbrubeck
layout: Skip layout traversals that obviously won't do anything. This reduces CPU usage when mousing over simple pages (example.com). More complex pages (Wikipedia) still reflow a lot due to other bugs. Additionally, this change causes Servo to stop painting the results of hit test queries. This is also a win for CPU usage. This significantly improves #9999, though there's more that can be done. I'll leave it open in case @paulrouget thinks this PR isn't enough. r? @mbrubeck <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10021) <!-- Reviewable:end -->
This commit is contained in:
commit
9813d11f86
4 changed files with 71 additions and 56 deletions
|
@ -1021,7 +1021,11 @@ impl Window {
|
|||
|
||||
debug!("script: layout joined");
|
||||
|
||||
self.pending_reflow_count.set(0);
|
||||
// Pending reflows require display, so only reset the pending reflow count if this reflow
|
||||
// was to be displayed.
|
||||
if goal == ReflowGoal::ForDisplay {
|
||||
self.pending_reflow_count.set(0);
|
||||
}
|
||||
|
||||
if let Some(marker) = marker {
|
||||
self.emit_timeline_marker(marker.end());
|
||||
|
@ -1104,7 +1108,7 @@ impl Window {
|
|||
|
||||
pub fn hit_test_query(&self, hit_test_request: Point2D<f32>, update_cursor: bool)
|
||||
-> Option<UntrustedNodeAddress> {
|
||||
self.reflow(ReflowGoal::ForDisplay,
|
||||
self.reflow(ReflowGoal::ForScriptQuery,
|
||||
ReflowQueryType::HitTestQuery(hit_test_request, update_cursor),
|
||||
ReflowReason::Query);
|
||||
self.layout_rpc.hit_test().node_address
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue