| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
| |
And likewise for |ProfilerChan|, |profiler_chan|, and so on. This
contrasts nicely with the newly added |MemoryProfiler|.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
This ensures that the layout viewport responds to each type of zoom correctly,
and lays the ground for CSS Media Queries and CSS Device Adaption.
Until we have proper touch support, mobile-style "pinch" zoom can be simulated
by holding Ctrl while scrolling with a mousewheel or trackpad gesture.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This fixes an issue where the CSS viewport was too large on high-DPI displays
because it was set to the window size in device pixels, instead of px. This
patch ensures that the window size is converted from device pixels to px
before being passed to script/layout code.
The Window trait now exposes the window size in both device pixels and
density-independent screen coordinates, with clearer method names.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This fixes an issue where the CSS viewport was too large on high-DPI displays
because it was set to the window size in device pixels, instead of px. This
patch ensures that the window size is converted from device pixels to px
before being passed to script/layout code.
The Window trait now exposes the window size in both device pixels and
density-independent screen coordinates, with clearer method names.
|
|/ |
|
| |
|
| |
|
| |
|
|\
| |
| |
| | |
This isolates layout code from upcoming refactoring in properties.rs.mako.
|
| |
| |
| |
| | |
This isolates layout code from upcoming refactoring in properties.rs.mako.
|
|/ |
|
| |
|
|
|
|
| |
Thanks to @Kimundi for https://gist.github.com/Kimundi/8782487
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
overflow correctly, and opportunistically lay out blocks in parallel
even if floats are present.
This commit fixes the `inline-height-test` in Acid2 by implementing
proper overflow as well as the inline "strut". (See CSS 2.1 § 10.8.1.)
Acid2 was accidentally being rendered properly before because tables'
descendant flows were not being laid out properly.
Display list building is now parallel and is done by bubbling up display
items and layers from parent to child. Speedups of around 60%-70% are
observed on Wikipedia with a 4-core HyperThreaded Core i7. More
optimizations are possible; this is just a start.
To minimize the amount of data that needs to be bubbled up, as well as
to make proper handling of `overflow: hidden` clipping easier, the
`StackingContext` abstraction is now purely internal to the display
list. That is, instead of placing items into a stacking context
directly, display items are placed into display lists alongside a
stacking level. When a stacking context is complete, it is flattened
with the the `flatten` method, which shuffles the display items that
make up the context into their proper order while handling clipping
properly.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
from `Flow`s; in the process, remove `InlineInfo` in favor of the
range-based design that was originally planned and halfway implemented.
Now, the DOM tree structure for inline flows is reflected not by a
series of arrays but instead by a flat list of ranges into the list of
boxes. As part of this, the `border` and `padding` fields, which were
incorrect in the case of inlines and necessitated separate
`noncontent_inline_foo` methods, have been merged into a single
`border_padding` field that is always guaranteed to be correct after
width assignment, even for inlines.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
April 10, 2014. The main changes are to privacy, to work around the
issues with incorrect bounds on the libstd `Arc<Mutex<T>>`, and the
various API changes strewn throughout the libraries.
|
| |
|
| |
|
| |
|
|
|
|
| |
descendant links separately
|
|
|
|
| |
pipeline. This handles fixed positioning mostly correctly.
|
| |
|
|
|
|
| |
This reverts commit f1394e3ffcd5ce97f307a38237ca05b1808ad71f.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This only traverses absolute flows, nothing else.
+ Also, a separate mini-traversal for store overflow.
+ Store descendants with position 'absolute' and 'fixed' in BaseFlow.
+ Bubble up links to absolute and fixed descendants during Flow Construction.
+ Set Rawlink to the CB in absolute descendants.
+ store_overflow() now uses absolute descendants' overflows too.
+ Add reftests for 'absolute' and 'fixed' static y position.
+ Add reftests for overflow (they all fail now).
+ Put absolute flow display items under their CB's ClipDisplayItem.
+ Paint borders in Box_ before the actual box stuff (minor fix in lieu of paint-order).
|
|
|
|
|
|
|
|
|
|
|
| |
+ Re-implement fixed positioning using the absolute positioning code.
+ Add reftests for absolute positioning and fixed positioning.
+ Refactor assign_widths in BlockFlow to isolate the calculation of
widths and margins.
+ Pass down details of the Containing Block for absolute and fixed flows
during layout. Use it to calculate the static position of absolute flows.
+ Defer calculation of absolute flow dimensions till we build the
display list.
|
| |
|
| |
|
| |
|
|
|
|
| |
15% layout speedup on mobile Wikipedia.
|
|
|
|
| |
5% layout speedup on mobile Wikipedia.
|
|\
| |
| |
| | |
I think gfx/opts.rs should be placed to more general place.
|
| | |
|
|/ |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This roughly implements the same cache found in Blink. 50% improvement
on the rainbow page, but at the cost of reducing parallel gains down to
nothing. I added a new page, `perf-rainbow-hard.html`, which disables
the optimizations in both Blink and Servo.
|
|
|
|
|
| |
If the cache is hit, then we can only compute inherited properties. This
is a WebKit optimization.
|
|
|
|
|
| |
No improvement on the rainbow page, but necessary for some other
optimizations we want to do.
|
|
|
|
|
|
| |
data.
9% improvement in style recalc on the rainbow page.
|
|
|
|
|
|
|
| |
We probably leak some threads and resources, e.g. when the script task crashes
and doesn't get a chance to send layout data back to layout to be deallocated.
Not tested with iframes yet.
|