Commit Graph

801 Commits

Author SHA1 Message Date
Markus Stange
094e47861d Bug 1151306 - Add a missing check during background color pulling. r=roc 2015-04-05 14:05:44 -04:00
Markus Stange
ec83de78c3 Bug 1148855 - Rework how display items are assigned to PaintedLayers and make it work the same way with and without APZ. r=roc 2015-04-02 14:22:40 -04:00
Markus Stange
c2a5f153a7 Bug 1148855 - Intermediate state that unifies APZ and non-APZ layerization behavior somewhat. 2015-04-01 17:31:56 -04:00
Markus Stange
62b818c22f Bug 1148855 - Mark some ContainerState methods as const. r=roc 2015-03-25 18:08:56 -04:00
Nicolas Silva
eae4d10b4d Bug 1132854 - Make nsIntSize a typedef of gfx::IntSize. r=Bas, roc 2015-03-29 16:59:08 +02:00
Tom Tromey
018eebcd63 Bug 1144820 - Use rvalue reference in AddProfileTimelineMarker. r=smaug 2015-03-27 08:41:00 -04:00
Kearwood (Kip) Gilbert
dbbdba9a93 Bug 1035611 - Part 1: Updated Matrix4x4::ProjectRectBounds to properly handle infinite values when untransformed rects cross the w=0 plane. r=mattwoodrow
- Added specialized rect clipping functionality to Matrix4x4::ProjectRectBounds
  so we don't have to return infinite values when rects cross the w=0 plane
  in homogenous coordinate space.
- Updated callsites of ProjectRectBounds to pass a clipping rect that is
  appropriate for the units that are returned.
2015-03-13 16:42:00 -04:00
Kushan Joshi
a3c4b7a023 Bug 1101627 - Add touch action regions. r=kats 2015-03-24 09:13:24 -04:00
Ehsan Akhgari
33bb32f549 Bug 1145631 - Part 1: Replace MOZ_OVERRIDE and MOZ_FINAL with override and final in the tree; r=froydnj
This patch was automatically generated using the following script:

function convert() {
echo "Converting $1 to $2..."
find . \
       ! -wholename "*/.git*" \
       ! -wholename "obj-ff-dbg*" \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_OVERRIDE override
convert MOZ_FINAL final
2015-03-21 12:28:04 -04:00
Markus Stange
46e2d15dbf Bug 1144307 - Destroy scroll info layer items when we're done with them. r=tn 2015-03-17 22:04:33 -04:00
Markus Stange
86b6ea312f Bug 1141595 - Make scroll info display item hoisting work after bug 913443. r=tn 2015-03-16 18:37:04 -04:00
Markus Stange
620446961e Bug 1141089 - Add some release assertions to gather more data. r=roc 2015-03-16 16:04:00 -04:00
Botond Ballo
b7b1daa972 Bug 1139675 - Simplify the APIs for getting and setting the pres shell resolution. r=mstange,mattwoodrow 2015-03-06 18:07:59 -05:00
Jeff Muizelaar
d0961738de Bug 1143789. Remove unnecessary cast to BasicLayerManager. r=mstange 2015-03-16 14:19:32 -04:00
Markus Stange
02b07f6efa Bug 1142211 - Add layerization testing mechanisms to reftest. r=roc
This adds support for class="reftest-opaque-layer" and for
reftest-assigned-layer="some-layer-name" to the reftest harness.

From reftest/README.txt:

Opaque Layer Tests: class="reftest-opaque-layer"
================================================

If an element should be assigned to a PaintedLayer that's opaque, set the class
"reftest-opaque-layer" on it. This checks whether the layer is opaque during
the last paint of the test, and it works whether your test is an invalidation
test or not. In order to pass the test, the element has to have a primary
frame, and that frame's display items must all be assigned to a single painted
layer and no other layers, so it can't be used on elements that create stacking
contexts (active or inactive).

Layerization Tests: reftest-assigned-layer="layer-name"
=======================================================

If two elements should be assigned to the same PaintedLayer, choose any string
value as the layer name and set the attribute reftest-assigned-layer="yourname"
on both elements. Reftest will check whether all elements with the same
reftest-assigned-layer value share the same layer. It will also test whether
elements with different reftest-assigned-layer values are assigned to different
layers.
The same restrictions as with class="reftest-opaque-layer" apply: All elements
must have a primary frame, and that frame's display items must all be assigned
to the same PaintedLayer and no other layers. If these requirements are not
met, the test will fail.
2015-03-11 14:51:59 -04:00
Markus Stange
458ad738ab Bug 1141281 - Don't put empty Info: lines into the layers dump. r=BenWa 2015-03-09 00:41:11 -04:00
Markus Stange
26d3fa6b86 Bug 1141408 - Don't include the display item's memory address in the profile label. r=BenWa 2015-03-07 18:40:03 -05:00
Milan Sreckovic
50350de860 Bug 1140113 - Catch direct (and some indirect) callers of CreateDrawTarget* and deal with failure. r=mstange 2015-03-09 15:48:20 -04:00
Markus Stange
60aa1656ae Bug 913443 - Remove duplicated argument variables. r=roc 2015-03-04 12:08:28 -05:00
Markus Stange
ab50ec247d Bug 913443 - Recycle PaintedLayers as soon as possible. r=roc
This means layers are assigned bottom-to-top.
2015-03-04 00:18:47 -05:00
Markus Stange
8b9c146165 Bug 913443 - When determining the layer to recycle, only consider layers that have display items in common with the layer we need. r=roc 2015-03-04 00:21:00 -05:00
Markus Stange
08cd6f5eac Bug 913443 - Delay PaintedLayer recycling until PopPaintedLayerData(). r=roc
Once we're smarter about recycling the right layer, we can't decide on a layer
as soon as we encounter its first display item. We might need to have to look
at all of the assigned display items. This change makes that requirement
explicit.
2015-03-03 21:32:08 -05:00
Markus Stange
de4601141f Bug 913443 - Add a display item buffer for PaintedLayerData so that we can assign items without needing to know the actual Layer. r=roc 2015-03-04 00:21:55 -05:00
Markus Stange
cd045a4b5e Bug 913443 - Change the order of these calls. r=roc
The calls above don't need access to the PaintedLayer, but the ones this change
is moving down do. This change just makes it more obvious that we're free to
move the calls to an even later point.
2015-03-03 17:21:42 -05:00
Markus Stange
a62ad81d88 Bug 913443 - Move IsWidgetLayerManager() check out of UpdateCommonClipCount. r=roc
UpdateCommonClipCount accesses the PaintedLayerData's mLayer field in order to
get the layer manager. We want to be able to call UpdateCommonClipCount when
mLayer is null.
2015-03-03 17:00:55 -05:00
Markus Stange
89e4ac2c1e Bug 913443 - Remove unused aItemVisibleRect argument. r=roc 2015-03-03 16:57:30 -05:00
Markus Stange
313c6c3469 Bug 913443 - Break CreateOrRecyclePaintedLayer up even more. r=roc 2015-03-02 19:25:13 -05:00
Markus Stange
6cfa76525a Bug 913443 - Extract layer hint calculation. r=roc 2015-03-02 19:24:18 -05:00
Markus Stange
3e610f145e Bug 913443 - Break up CreateOrRecyclePaintedLayer into more parts. r=roc 2015-03-02 18:43:58 -05:00
Markus Stange
12bd1db1fe Bug 913443 - Remove some #ifdefs. r=roc
This function will be split up into more functions, and carrying along the
#ifdefs throughout those would be a pain.
2015-03-02 18:29:12 -05:00
Markus Stange
c6051df741 Bug 913443 - Remove mention of the word ThebesLayer in a comment. r=roc 2015-03-02 18:19:12 -05:00
Markus Stange
ea6525cc63 Bug 961887 - Find uniform opaque background colors under ContainerLayers. r=roc 2015-02-25 11:47:22 -05:00
Markus Stange
2e16d3eb79 Bug 961887 - Make FindOpaqueBackgroundColorFor take a region instead of a PaintedLayerData. r=roc 2015-02-20 14:46:09 -05:00
Markus Stange
a097b563bd Bug 961887 - Refactor mVisibleAboveRegion management. r=roc 2015-02-18 17:37:19 -05:00
Timothy Nikkel
2138def09b Bug 1102896. Save and restore the subpixel AA settings of the draw target when drawing an inactive layer manager so they don't get clobbered. r=mattwoodrow 2015-02-24 22:59:43 -06:00
Wes Kocher
cc0aeb80b6 Backed out 3 changesets (bug 961887) for reftest failures on a CLOSED TREE
Backed out changeset 1684d29858e1 (bug 961887)
Backed out changeset 97c8184c3058 (bug 961887)
Backed out changeset f02c5c1f7704 (bug 961887)
2015-02-24 17:32:37 -08:00
Markus Stange
533b9d24b1 Bug 961887 - Find uniform opaque background colors under ContainerLayers. r=roc 2015-02-24 14:35:46 -05:00
Markus Stange
7c77f134f7 Bug 961887 - Make FindOpaqueBackgroundColorFor take a region instead of a PaintedLayerData. r=roc 2015-02-20 14:46:09 -05:00
Markus Stange
1d50988de8 Bug 961887 - Refactor mVisibleAboveRegion management. r=roc 2015-02-18 17:37:19 -05:00
Markus Stange
271445d798 Bug 1134311 - Get rid of the draw region and always only use the visible region. r=roc 2015-02-18 13:01:40 -05:00
Timothy Nikkel
fb9bac3e2d Bug 1118051. Report layer event regions items as having empty bounds so they don't expand the visible region of layers. r=roc
When choosing a painted layer for the event region item we must report the bounds of the hit regions as the bounds so that we don't fall through to the bottom most painted layer.
2015-02-11 17:06:47 -06:00
David Anderson
78dfafe577 Disable layers flattening if APZ is enabled. (bug 1131389, r=mattwoodrow)
--HG--
extra : rebase_source : 8c023aeb48688fdff4f6496d1778c09095c83630
2015-02-10 20:54:18 -08:00
Nicholas Nethercote
6ee3666899 Bug 1127201 (attempt 2, part 1) - Replace most NS_ABORT_IF_FALSE calls with MOZ_ASSERT. r=Waldo.
--HG--
extra : rebase_source : 488e401ff87e31a2074c4108c4df0572d9536667
2015-02-09 14:34:50 -08:00
Andrew McCreight
8413cc973c Back out Bug 1127201 (part 2) for various problems. 2015-02-06 15:04:32 -08:00
Nicholas Nethercote
3629781b69 Bug 1127201 (part 2) - Convert all NS_ABORT_IF_FALSE calls to MOZ_ASSERT. r=Waldo.
--HG--
extra : rebase_source : 99182e70335d2b5ff95f8c528ae992d37294be3a
2015-02-04 20:05:36 -08:00
Seth Fowler
7d2a7a5455 Bug 1128225 (Part 3) - Add infrastructure for tracking draw results in geometry items. r=tn 2015-02-04 13:50:56 -08:00
David Anderson
d4b93595b2 Make debugging whole-layer invalidation slightly easier. (bug 1128752, r=mattwoodrow) 2015-02-03 14:18:44 -08:00
Timothy Nikkel
6c3cb83d4a Bug 1120431. Ensure that the draw region of a painted layer always includes the visible region, even if simplication of the region might try to change that. r=matt.woodrow
Sometimes, in very specific cases,  the visible region gets simplified to one rect and is thus much bigger than the draw region. This becomes a problem if we decide to pull an opaque background color from a lower layer so that we are opaque. In which case we draw the background color over the whole visible region. But we use the draw region to determine if we can place items below this layer, so that background color could cover them incorrectly.
2015-01-25 17:28:51 -06:00
Tom Tromey
e46c893814 Bug 1124680 - add MOZ_OVERRIDE in subclasses of TimelineMarker. r=smaug 2015-01-22 07:35:00 +01:00
Kartikaya Gupta
791c89ebb6 Bug 1116586 - Fix hit region for items with rounded corners. r=tn 2015-01-21 09:16:38 -05:00
Kartikaya Gupta
b4cf97874e Bug 1119942 - Hoist nsDisplayScrollInfoLayer items out of inactive layermanagers into their parent. r=tnikkel,mattwoodrow 2015-01-20 09:49:30 -05:00
Kartikaya Gupta
8e244775ac Bug 1119942 - Add some missing logging for which display items end up on which layer. r=BenWa,mattwoodrow 2015-01-20 09:49:30 -05:00
David Anderson
7ae9b13ba1 Fix classic scrollbars getting occluded with containerless scrolling. (bug 1100756, r=roc)
--HG--
extra : rebase_source : fcf95ab0c435d9c29a6a3552fe05d7f1ad3bc0ec
2015-01-13 23:55:17 -08:00
Tom Tromey
626168339b Bug 1113706 - move TimelineMarker to a new header; r=smaug 2015-01-05 09:39:16 -08:00
Benoit Girard
9e4578658c Bug 1113781 - Only track layer decision with MOZ_DUMP_PAINTING and add a preference. r=mstange 2014-12-31 15:21:58 -05:00
Benoit Girard
8d46226796 Bug 1113837 - Build display-list dumping without MOZ_DUMP_PAINTING. r=mstange 2014-12-31 15:17:39 -05:00
Kartikaya Gupta
b492715b7d Bug 1098654 - Improve layerization of display items when dealing with async scrollable layers. r=tnikkel
The function IsSubjectToAsyncTransforms() was not correctly reporting when a
layer was actually subject to async transforms. As a result, sometimes display
items from above such a layer would end up in a layer below. This could
manifest as page elements being improperly covered by async scrolling elements.
2014-12-30 09:39:39 -05:00
David Anderson
c6a362e7e4 Allow containerless scrolling for root scroll frames, too. (bug 1076192, r=tn)
--HG--
extra : rebase_source : 29d74a8734aabc0e583ad5e372f7b04bcc9e2b8f
2014-12-17 15:37:28 -08:00
Wes Kocher
e83bf23b26 Merge m-c to inbound a=merge 2014-12-12 17:39:12 -08:00
Tom Tromey
b07d94c0b7 Bug 1050770 - Add paint details to timeline. r=smaug, r=mattwoodrow 2014-12-11 10:40:00 -05:00
Jeff Muizelaar
93fa5b52e6 Bug 1110530. Use a rectangle instead of a region for layer bounds. r=roc
We only ever look at the bounds of this region so we can just track
that in a single rect instead of a region.

--HG--
extra : rebase_source : 4cd84ab724d9dde1c578e71362cab8033af7a210
2014-12-12 11:25:36 -05:00
Kartikaya Gupta
5fad9ad99a Bug 1105016 - Update tld to pld in debug logging. r=mstange
DONTBUILD because NPOTB
2014-11-26 13:58:15 -05:00
Kartikaya Gupta
b30e6b04cd Bug 1104809 - Log accumulation of event regions into a PaintedLayer. r=mstange,tn 2014-11-25 17:05:39 -05:00
Jonathan Watt
cf91ac7a84 Bug 1103623 - Port most remaining gfxContext::Fill() calls to Moz2D. r=mattwoodrow 2014-11-24 00:04:33 +00:00
Bas Schouten
d4181f7c5f Bug 1099335: Base decision to use a complex clip on whether a DT supports regoin clipping. r=jrmuizel
DrawTargets that support region clipping are able to clip to regions effectively. Other DrawTargets go through expensive complex clip paths. When invalidating regions we have code that draws in multiple steps when using Direct2D to avoid this expense, we should base the decision to do this simply on whether the DrawTarget supports fast region clipping.
2014-11-16 19:17:40 +00:00
Jonathan Watt
1151d6d34f Bug 651021 - Make nsRenderingContext a stack class. r=jrmuizel 2014-10-31 20:08:49 +00:00
Jonathan Watt
1c4344fe0a Bug 1090607 - Port FrameLayerBuilder.cpp's DebugPaintItem helper to Moz2D. r=Bas 2014-10-29 17:07:11 +00:00
Markus Stange
dc285f3c81 Bug 1055634 - Propagate font smoothing background colors to layers. r=roc 2014-10-24 18:32:23 +02:00
Benoit Girard
73fd622865 Bug 961871 - Part 4: Fix budget calculation by adding Maybe prerenderer and animate. r=roc 2014-10-21 21:55:55 -04:00
Benoit Girard
9a6afcf765 Bug 961871 - Part 3: Implement will-change budgeting. r=roc 2014-10-21 21:54:32 -04:00
Benoit Girard
a5d50725ad Bug 961871 - Part 2: Refactor will-change scroll, pass through a nsDisplayListBuilder. r=mattwoodrow 2014-10-21 21:54:06 -04:00
Timothy Nikkel
835e640a3f Bug 1062792. Don't add clipped out parts of a layer to the opaque region. r=roc 2014-10-21 20:33:12 -05:00
Jonathan Watt
134efbf1e5 Bug 1085167, part 2 - Get rid of nsRenderingContext's DeviceContext and any need for it to know about app-units-per-device-pixel. r=mattwoodrow
--HG--
extra : rebase_source : d8fb804f03a1cc4635d6acd7f66f5f21962de6d3
2014-10-20 10:55:49 +01:00
Phil Ringnalda
97dd36eb4f Back out 820188e039a0 (bug 1067748) for Android reftest-2 failures 2014-10-19 13:50:29 -07:00
Robert O'Callahan
e63ed307d0 Bug 1067748. When a solid-color display item covers everything else in its layer, make it a ColorLayer. r=tn 2014-09-16 16:27:14 +12:00
Jonathan Watt
f440265515 Bug 1082483, part 2 - Convert Mozilla code to use the new Matrix4x4::PreTranslate/PreScale method names. r=Bas 2014-10-16 10:51:12 +01:00
Jonathan Watt
84e4023207 Bug 1077961, part 2 - Stop doing lots of unnecessary and expensive Matrix4x4 multiplication. r=Bas 2014-10-08 04:43:00 +01:00
Jeff Muizelaar
05d4c288be Bug 1074615. Remove DRAW_SNAPPED. r=mwoodrow
This doesn't seem to be necessary and doesn't really make sense to me. This
will help us moving region clipping into Moz2D

--HG--
extra : rebase_source : 4a5987ce2a95eaba44a69233d1b7f461f5ec16ea
2014-10-01 01:25:25 -04:00
Botond Ballo
11cb81a983 Bug 1068961 - Reset clip rect for color layers. r=roc 2014-09-26 14:11:17 -04:00
Markus Stange
abdabfe784 Bug 1073103 - SReplace 'Thebes' with 'Painted' in some more places. r=roc 2014-09-26 13:07:06 -04:00
Markus Stange
131bfce4c5 Bug 1073103 - Rename ThebesLayer to PaintedLayer. r=roc
--HG--
rename : gfx/layers/basic/BasicThebesLayer.cpp => gfx/layers/basic/BasicPaintedLayer.cpp
rename : gfx/layers/basic/BasicThebesLayer.h => gfx/layers/basic/BasicPaintedLayer.h
rename : gfx/layers/client/ClientThebesLayer.cpp => gfx/layers/client/ClientPaintedLayer.cpp
rename : gfx/layers/client/ClientThebesLayer.h => gfx/layers/client/ClientPaintedLayer.h
rename : gfx/layers/client/ClientTiledThebesLayer.cpp => gfx/layers/client/ClientTiledPaintedLayer.cpp
rename : gfx/layers/client/ClientTiledThebesLayer.h => gfx/layers/client/ClientTiledPaintedLayer.h
rename : gfx/layers/composite/ThebesLayerComposite.cpp => gfx/layers/composite/PaintedLayerComposite.cpp
rename : gfx/layers/composite/ThebesLayerComposite.h => gfx/layers/composite/PaintedLayerComposite.h
rename : gfx/layers/d3d10/ThebesLayerD3D10.cpp => gfx/layers/d3d10/PaintedLayerD3D10.cpp
rename : gfx/layers/d3d10/ThebesLayerD3D10.h => gfx/layers/d3d10/PaintedLayerD3D10.h
rename : gfx/layers/d3d9/ThebesLayerD3D9.cpp => gfx/layers/d3d9/PaintedLayerD3D9.cpp
rename : gfx/layers/d3d9/ThebesLayerD3D9.h => gfx/layers/d3d9/PaintedLayerD3D9.h
2014-09-26 13:06:08 -04:00
Robert O'Callahan
392c6d258b Bug 1062100. Part 3: When layers are flattened, let all the layers contribute opaqueness to the container layer, whatever their animated geometry roots are. r=tn
--HG--
extra : rebase_source : 255807b178162f62082da0fe2bed2315cf4c0581
2014-09-17 18:45:47 +12:00
Robert O'Callahan
140f2acdb4 Bug 1062100. Part 2: Assign clip rects to non-async-scrollable scrolled layers, and hide clipped layers if some non-moving layer covers their entire clip rect. r=mattwoodrow
--HG--
extra : rebase_source : bdc498a51f323d8536746e5a6faf6094a243a984
2014-09-06 16:16:33 +12:00
Wes Kocher
48ee047035 Merge inbound to m-c a=merge 2014-09-16 17:06:43 -07:00
Benoit Girard
37b549af2f Bug 1056944 - Create an image layer if opaque image covers previous display items. r=mwoodrow
--HG--
extra : rebase_source : d561b6e215d654560f89acddec1663517ca4e8ce
2014-09-04 01:02:27 -04:00
Carsten "Tomcat" Book
8d4febe0fa Backed out changeset ec335dbccfbd (bug 1067748) for reftest failures 2014-09-16 09:31:20 +02:00
Robert O'Callahan
9b4d6f2a19 Bug 1067748. When a solid-color display item covers everything else in its layer, make it a ColorLayer. r=tn
--HG--
extra : rebase_source : e0fdaddfd24c59531ffef865b46f948ba203acaa
2014-09-16 16:27:14 +12:00
Robert O'Callahan
c08d60faea Bug 1066591. Backout c43865439dd9 (bug 1066211) to fix regression.
--HG--
extra : rebase_source : bd821aade3b17d7eb4cd6acb5f56b46a343eb239
2014-09-13 11:56:16 +12:00
Kartikaya Gupta
6b0862f4b0 Bug 1013385 - Add the layer bounds to the layers API and use it for checkerboarding. r=mattwoodrow,BenWa 2014-09-15 16:09:52 -04:00
Jonathan Watt
fa8c7ec8a5 Bug 1064084, part 1 - Convert all consumers of gfxContext::Translate() to use gfxContext::SetMatrix()/Multiply(). r=Bas 2014-09-11 07:57:38 +01:00
Jonathan Watt
b3072839ca Bug 1065031, part 2 - Changes to Moz2D consuming code to update callers of Moz2D Matrix's Translate, Scale and Rotate methods to use these methods' new names. r=Bas 2014-09-10 18:29:35 +01:00
Jonathan Watt
581078dcb7 Bug 1065127 - Avoid Matrix().Translate()/Scale()/Rotate() multiplication in lots of places. r=Bas 2014-09-10 14:26:12 +01:00
Carsten "Tomcat" Book
d9c5bea4e5 Backed out changeset e6b766d8a815 (bug 1065127) for bustage 2014-09-10 14:30:36 +02:00
Jonathan Watt
cc5bf95ddf Bug 1065127 - Avoid Matrix().Translate()/Scale()/Rotate() multiplication in lots of places. r=Bas
--HG--
extra : rebase_source : ef075258c31973c4943b9b3a9229685a9bb83917
2014-09-10 11:45:42 +01:00
Robert O'Callahan
e951a951fe Bug 1062100. Part 2: Assign clip rects to non-async-scrollable scrolled layers, and hide clipped layers if some non-moving layer covers their entire clip rect. r=mattwoodrow 2014-09-06 16:16:33 +12:00
Robert O'Callahan
d193c9957e Bug 1062100. Part 1: Remove ItemCoversScrollableArea. r=mattwoodrow
This isn't really part of this bug but it simplifies related code.
2014-09-06 16:16:33 +12:00
Patrick Brosset
82fd842cb1 Bug 1050376 - Record restyle/reflow/paint devtools timeline markers at docshell level; r=smaug 2014-09-09 20:54:08 +02:00
Carsten "Tomcat" Book
1d41000589 Backed out changeset 48816257a7b0 (bug 1050376) for bc2 test failures 2014-09-09 11:15:18 +02:00
Patrick Brosset
91bdb22abe Bug 1050376 - Record restyle/reflow/paint devtools timeline markers at docshell level; r=smaug 2014-09-09 09:48:36 +02:00
Robert O'Callahan
293fcf9eac Bug 967844. Part 3: Setup FrameMetrics from FrameLayerBuilder based on animated geometry roots. r=mattwoodrow
--HG--
extra : rebase_source : 19593cafc17053d450905161fa7d4ce8721c58a0
2014-08-31 15:29:24 +12:00