Hixie 547e003af7 Short-circuit the relayoutSubtreeRoot when the child couldn't change dimensions anyway because the parent constrained it.
The relayout subtree root concept is intended to handle the case where
a node, when it lays itself out for a second time, changes its opinion
about what dimensions it should be. In such a situation, the parent,
if it based its own opinion about what size _it_ should be on the
child's dimensions, would also need to lay itself out again. Thus,
when this scenario is possible, the child remembers the parent, and
when it would be told to relayout, we actually start the layout with
the parent.

In practice, this chains, and we end up with nodes that point to
ancestors ten or more steps up the tree such that when the inner most
child re-lays-out, the whole app ends up relaying out.

This patch tries to short-circuit this for the case where the
constraints being applied to the child are such that actually, the
child has no choice about its dimensions. In that case, the parent
can't change dimensions when the child re-lays-out.

This makes a huge difference on the stocks demo app. Without this, on
the third rendered frame, there are 72 relayoutSubtreeRoot links, the
deepest chain is 8 deep, and 9 of the chains are only 1 level deep.
With it, there are 63 relayoutSubtreeRoot links, the deepest chain is
only 4 deep, and 38 of the chains are only 1 level deep.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1196553004.
2015-06-22 16:51:25 -07:00
..
2015-06-13 09:46:52 -07:00

Sky Examples

This directory contains several examples of using Sky. Each of these is an individual Dart application package. If you wish to run them with sky_tool then you will want to run pub get inside their directory before running ./packages/sky/sky_tool start.

  1. Hello, world. The hello world app is a basic app that shows the text "hello, world."

  2. Stocks. The stocks app is an example of a typical mobile app built using Sky. The app shows a list of all the stocks in the NASDAQ.

  3. Widgets. The widgets app contains a number of Sky widgets so you can experiment with them in a simple container.