Граф коммитов

377 Коммитов

Автор SHA1 Сообщение Дата
Ryan VanderMeulen 5f2a19ee6e Revert c39d36167b99 due to a horribly munged backout. 2012-06-10 19:44:50 -04:00
Ryan VanderMeulen 6d6c4efbab Backout the bug 754202 backout due to orange. 2012-06-10 19:37:47 -04:00
Nicholas Cameron d9b806d12b Bug 755078 - Backout previously-landed patch for bug 755078. r=roc 2012-06-09 14:22:40 -04:00
Robert O'Callahan 276c0dd363 Bug 753329. Share ThebesLayerInvalidRegion for a given ContainerLayer across all the frames that are sharing that layer as their ContainerLayer. r=mattwoodrow
* * *
Bug 753329. Followup: put ThebesLayerInvalidRegionProperty in display-list-builder coordinates so it can be shared by frames with different coordinate systems. r=mattwoodrow
2012-06-07 22:07:32 +12:00
Nicholas Cameron 51d3372b42 Bug 758561 - Don't build a mask for an empty layer. r=roc 2012-05-28 21:10:08 -04:00
Nicholas Cameron f359b4c94c Bug 757346 - Change from clipping the mask to drawing it. r=roc 2012-05-27 16:55:22 -04:00
Robert O'Callahan a567b26b6f Bug 607417. Improve definition of the 'fixed layer' flag. r=tnikkel 2012-05-04 17:00:57 +12:00
Nicholas Cameron 0ff78c2542 Bug 753784; force mask layers to have a single tile - misc bits and pieces. r=roc 2012-05-17 10:30:10 +12:00
Nicholas Cameron 13553ad870 Bug 753784; add the ability to force a single tile. r=roc 2012-05-22 19:14:03 -04:00
Gervase Markham 82ff7027aa Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Nicholas Cameron 5027f9e01b Bug 755078 - Disable mask layers on Android. r=roc 2012-05-17 10:30:10 +12:00
Matt Woodrow 3fe5034053 bug 750334 - rotating image appears too big during transition, then snaps to correct size r=roc
--HG--
extra : rebase_source : a8064d474693838e68f7b865f76043e1192a07a5
2012-05-15 10:31:39 +12:00
Nicholas Cameron a4a5ce2ae9 Bug 754488 - Fix warning in FrameLayerBuilder.cpp. r=dholbert 2012-05-14 19:01:05 -04:00
Robert O'Callahan ecec98a34e Bug 681192. Part 10: Control rounding direction of scaledOffset to try to make the residual be close to mActiveScrolledRootPosition. r=tnikkel
--HG--
extra : rebase_source : f27fb737f8956ed117df0be3a71da847cc2048c0
2012-05-10 17:24:20 +12:00
Robert O'Callahan 5943f7cf5b Bug 681192. Part 0.3: Add FrameLayerBuilder::GetThebesLayerResolutionForFrame. r=mattwoodrow
--HG--
extra : rebase_source : eea4dee6d081de5c288e295f3549fc88b10e6c39
2012-05-10 17:24:18 +12:00
Robert O'Callahan 14f22692ee Bug 681192. Part 0.2: Use FuzzyEqual to check whether we need to invalidate ThebesLayers when subpixel offsets have changed. r=mattwoodrow
--HG--
extra : rebase_source : d0f8464aea9a436214d394123b1399105ccd0f66
2012-05-10 17:24:18 +12:00
Ed Morley 559a85b824 Backout 5c35cd6f3ea4 & ba39b0822992 (bug 607417) for native Android R1 failures 2012-05-04 14:26:09 +01:00
Robert O'Callahan 3cff69730f Bug 607417. Improve definition of the 'fixed layer' flag. r=tnikkel
--HG--
extra : rebase_source : f68d53736e65c21a30a6248abe6b2b9ec32cdb17
2012-05-04 17:00:57 +12:00
Robert O'Callahan 5afaaecea3 backing out patches for bug 607417 due to build bustage 2012-05-04 17:29:05 +12:00
Robert O'Callahan a3f43739ba Bug 607417. Improve definition of the 'fixed layer' flag. r=tnikkel 2012-05-04 17:00:57 +12:00
Andreas Gal 7db0b87ef1 Do image scaling on the GPU (bug 650988, r=roc,cjones). 2012-05-03 07:05:55 -07:00
Nicholas Cameron 72a96f7faf Bug 716439; load a mask texture in the OGL backend. r=BenWa 2012-03-19 09:08:49 +13:00
Nicholas Cameron 472977cd01 Bug 716439; creating mask layers. r=roc 2012-02-08 11:27:44 +13:00
Nicholas Cameron c90b8a6b54 Bug 716439; recycling mask layers. r=roc 2012-02-08 11:26:40 +13:00
Nicholas Cameron a8008d3881 Bug 716439; User data for mask layers. r=roc 2012-02-08 11:26:33 +13:00
Robert O'Callahan 68cca24d1a Bug 749075. Part 2: Skip the guts of Accumulate if we're adding a display item in an area of the layer that's already opaque and visible. r=mattwoodrow
This patch moves some stuff that needs to be done for every item up to the front of the function, then checks to
see if the item is being added in an area that's already opaque and visible. If so (and assuming the
color-layer optimization has already been disabled), none of the rest of the method would do anything so we
can exit early. In particular we avoid calling IsUniform and GetOpaqueRegion on the item, and we also avoid
some expensive region manipulation.
2012-05-03 16:29:05 +12:00
Robert O'Callahan 1c1601b380 Bug 749075. Part 1: Refactor the nsDisplayItem API for testing whether the item needs to be rendered to a transparent surface. r=mattwoodrow
Currently we return an extra out parameter on GetOpaqueRegion. This is ugly and it's also going to be inefficient
because in a followup patch I'm going to avoid calls to GetOpaqueRegion, but we still need to know whether the item
needs a transparent surface. So this patch removes that out parameter. Instead, we rely on the fact that only
Windows' glass-window-background display item needs to force a transparent surface, and there can only be one
of those per window. So we store a reference to it in the nsDisplayListBuilder if there is one, and then we can
efficiently tell if any leaf display item is the one that forces a transparent surface. For display items that
wrap a list, we continue to store whether they need to force a transparent surface in a boolean in the list.
2012-05-03 16:29:05 +12:00
Andreas Gal 154b79964a Render active layers at full resolution and transform them on the GPU (bug 750006, r=roc). 2012-04-29 14:41:13 -07:00
Matt Woodrow b60d95b9d8 Bug 747718 - Disable ColorLayer optimizations when we have rounded-rect clipping. r=roc 2012-04-27 12:24:53 +12:00
Jeff Muizelaar aca6f7c82d Bug 745864. Add SAMPLE_LABELs to layout code. r=roc, a=joe
--HG--
extra : rebase_source : d826780c34692d333442b6bf563791b53bf3aa3d
2012-04-16 14:37:59 -04:00
Robert O'Callahan ff25496dd5 Bug 728983. Part 2: When display items for multiple frames are merged, track the merged frames and mark them all as having an associated container layer. This ensures that invalidations are processed correctly. r=mattwoodrow 2012-04-17 17:45:04 +12:00
Robert O'Callahan 9b4c5f4742 Bug 744607. Intersect a display item's layer-pixels draw-rect with the snapped clip rect. r=tnikkel 2012-04-13 23:44:05 +12:00
Robert O'Callahan 7c34e38876 Bug 733607. Restructure logic to compute snapped bounds of display items in layer coordinates. Moves responsibility for computing snapped bounds from within the display items to callers of GetBounds/GetOpaqueRegion. r=tnikkel
Previously we snapped the results of nsDisplayItem::GetBounds and
nsDisplayItem::GetOpaqueRegion internally. By tracking which display items were
inside transforms, we disabled snapping quite conservatively whenever an ancestor
had a transform, which is undesirable.

With this patch, we don't snap inside GetBounds or GetOpaqueRegion, but just return
a boolean flag indicating whether the item will draw with snapping or not. This flag
is conservative so that "true" means we will snap (if the graphics context has a transform
that allows snapping), but "false" means we might or might not snap (so it's always safe
to return false).

FrameLayerBuilder takes over responsibility for snapping item bounds. When it converts
display item bounds to layer pixel coordinates, it checks the snap flag returned from
the display item and checks whether the transform when we draw into the layer will be
a known scale (the ContainerParameters scale factors) plus integer translation. If both
are true, we snap the item bounds when converting to layer pixel coordinates. With
this approach, we can snap item bounds even when the items have ancestors with active
transforms.
2012-04-10 23:24:18 +12:00
Robert O'Callahan 6191d9ab08 Bug 735141. Clear imageContainer to indicate that we're not using that optimization. r=tnikkel 2012-03-19 20:26:39 +13:00
Ali Juma 0e369cf4b3 Bug 725095 - Address Layout review comments. r=mats 2012-03-13 12:57:31 -04:00
Benoit Girard 73a287f0ea Restore merge changeset 39a3044823b0, regression fixed upstream in mc 2012-03-05 13:09:05 -05:00
Benoit Girard a4a3883264 Backed out changeset 39a3044823b0 because of bad interaction with maple. 2012-03-02 18:32:46 -05:00
Benoit Girard 7e6f558d70 Merge mc->Maple, resolved conflicts 2012-03-02 14:27:05 -05:00
Kartikaya Gupta 45668a01d2 Merge m-c 2012-02-27 15:06:35 -05:00
Doug Turner 754c5d2cbb merge with mozilla-central: 2012-02-22 09:30:09 -08:00
Ed Morley 88da8e9f34 Backout 5ba9a4f41128 (bug 724614) for OS X reftest failures
--HG--
rename : layout/reftests/transform-3d/scale3d-all-separate.html => layout/reftests/transform-3d/scale3d-2-ref.html
2012-02-21 13:53:11 +00:00
Robert O'Callahan 7055dae549 Bug 727661. We should only optimize ThebesLayers to ColorLayers or ImageLayers for brand-new layers (ThebesLayers with no currently valid data). Otherwise we risk ColorLayers being a deoptimization if there is valid content in the layer that doesn't happen to be visible but might become visible later, or if the layer contents are only temporarily a solid color and will soon need a buffer again. r=tn 2012-02-16 17:17:20 +13:00
Benoit Girard 465c0d7898 Make OMTC changes not effect desktop 2012-02-13 17:17:12 -05:00
Aryeh Gregor 85063b1c4c Bug 724614 - 3D scaling makes text blurry. r=mattw
--HG--
rename : layout/reftests/transform-3d/scale3d-2-ref.html => layout/reftests/transform-3d/scale3d-all-separate.html
2012-02-09 10:09:39 -05:00
Benoit Girard 2fd24c9367 Merge viewport with tip 2012-02-08 20:42:17 -05:00
Patrick Walton 50a40420d8 Temporary workaround for bug 681192 and bug 724786 (subpixel layer invalidation). Remove me later. 2012-02-07 22:21:38 -08:00
Matt Woodrow 72f481f48f Bug 700240 - Print display lists to a file. r=roc,bjacob 2012-03-01 21:26:09 +13:00
Robert O'Callahan e18485abb6 Bug 721627. Don't return nsRefPtr/nsCOMPtr from nsDisplayImage methods. nsDisplayImage::GetImage is unused anyway. r=mats 2012-01-30 18:16:54 +13:00
Phil Ringnalda b6aa88fd9e Back out eb80ab6ee07b (bug 721627) and 06d02e7132b2 (bug 721294) for orange and red 2012-01-27 20:31:29 -08:00
Robert O'Callahan 24159c1296 Bug 721627. Don't return nsRefPtr/nsCOMPtr from nsDisplayImage methods. nsDisplayImage::GetImage is unused anyway. r=mats
--HG--
extra : rebase_source : 113647a8bf8101b7c4d7058bd205be734f38125d
2012-01-28 16:36:49 +13:00
Robert O'Callahan bc3719b007 Bug 727661. We should only optimize ThebesLayers to ColorLayers or ImageLayers for brand-new layers (ThebesLayers with no currently valid data). Otherwise we risk ColorLayers being a deoptimization if there is valid content in the layer that doesn't happen to be visible but might become visible later, or if the layer contents are only temporarily a solid color and will soon need a buffer again. r=tn 2012-02-16 17:17:20 +13:00
Aryeh Gregor 5023b099c7 Bug 724614 - 3D scaling makes text blurry. r=mattw
--HG--
rename : layout/reftests/transform-3d/preserve3d-1a.html => layout/reftests/transform-3d/preserve3d-5a.html
rename : layout/reftests/transform-3d/scale3d-2-ref.html => layout/reftests/transform-3d/scale3d-all-separate.html
2012-02-23 13:03:27 -05:00
Bas Schouten 7244d2b180 Bug 715785: Make ImageContainers independent of LayerManagers. r=roc 2012-02-01 03:18:30 +01:00
Nicholas Cameron f717192b91 Bug 718521 - Fix bug clipping to rounded rectangles for multiple objects. r=roc 2012-01-20 09:21:41 +13:00
Robert O'Callahan d884f2e2d2 Bug 713523. Part 2: Add SimplifyOutward for mVisibleAboveRegion and mDrawAboveRegion to avoid performance sinkholes when many layers are above a single ThebesLayer. r=tn 2012-01-12 00:26:33 +13:00
Robert O'Callahan cf0b3548af Bug 713532. Part 1: Suppress subpixel antialising in retained layers with an ancestor which has a non-integer-translation transform. r=tn 2012-01-12 00:26:33 +13:00
Jeff Walden 2e53b58879 Bug 711799 - Add parentheses to a bunch of && expressions nested within || expressions. r=dholbert 2011-12-18 01:00:47 -05:00
Jeff Muizelaar 9317a91431 Bug 707800. Add more sampler labels. r=bgirard 2011-12-02 17:05:33 -05:00
Chris Lord a5553a701a Bug 706690 - CSS scaling is jagged while layers are active. r=roc
While layers are active, scale factors are normalized to a power of 2 to
reduce the number of resolution changes during animations. This patch disables
the normalization when the scale factor on the layer is unchanged, or when
the layer was previously unscaled.
2011-12-07 23:12:41 +00:00
Matt Woodrow 76656ee23d Bug 700240 - Make display list debugging independent of DEBUG. r=khuey,roc 2011-11-17 16:44:16 +13:00
Bas Schouten 4fb0398617 Bug 334411: Introduce flashing invalidates areas when paint flashing is enabled. r=roc 2011-11-15 04:59:03 +00:00
Matt Woodrow 0d8c7a9eff Bug 695275 - Fix conversion of ThebesLayers to ImageLayers. r=roc 2011-10-26 16:24:58 +13:00
Matt Woodrow 3043e9d166 Bug 695275 - Add CheckAndClearPaintedState to test painting. r=roc 2011-10-26 16:23:26 +13:00
Robert O'Callahan 78adb06e98 Backed out changeset 9bbb30ec51f5 2011-10-26 15:55:51 +13:00
Robert O'Callahan f2d3346139 Bug 678859. Don't create layers for content less than 16x16 pixels. r=tn 2011-10-26 14:14:49 +13:00
Ehsan Akhgari 92064e6d3f Bug 690892 - Replace PR_TRUE/PR_FALSE with true/false on mozilla-central; rs=dbaron
Landing on a CLOSED TREE
2011-10-17 10:59:28 -04:00
Justin Lebar 76d773f5f0 Bug 688619 - Make FrameLayerBuilder::DisplayItemEntry use an nsAutoTArray. r=roc
--HG--
extra : rebase_source : 7793ddde81ad25127a75fc8f2b9d67d454941b83
2011-10-06 17:35:08 -04:00
Michael Wu d2b70213ac Bug 675553 - Switch from PRBool to bool on a CLOSED TREE , r=bsmedberg,khuey,bz,cjones
--HG--
rename : tools/trace-malloc/bloatblame.c => tools/trace-malloc/bloatblame.cpp
2011-09-28 23:19:26 -07:00
Mats Palmgren daf47bf09d Bug 684574 - InternalInvalidateThebesLayersInSubtree should recurse on the subdocument root frame. r=roc 2011-09-06 14:56:45 +02:00
Matt Woodrow 11c1aac810 Bug 505115 - Part 15 - Add 4D Vectors, Quaternions and gfx3DMatrix functions. r=derf 2011-08-27 12:06:03 +12:00
Mats Palmgren 2c56109b0d Bug 653649 - New way of getting child lists from frames. (part 3/5) r=roc
Update GetAdditionalChildListName consumers to use the new
child list iterator instead.
2011-08-24 22:54:29 +02:00
Matt Woodrow d9e573335e Bug 505115 - Part 8c - Use ray tracing to untransform 2d points on a 3d plane. r=roc 2011-08-03 15:04:21 +12:00
Robert O'Callahan 4bf1c2993b Bug 637852. Part 24: Fix scale/translate order in DrawThebesLayer. r=tnikkel 2011-06-23 00:11:28 +12:00
Robert O'Callahan 9d4ace85bf Bug 637852. Part 23: Fix incorrect call to 'abs'. r=tnikkel 2011-06-23 00:11:28 +12:00
Robert O'Callahan 6965db4c13 Bug 637852. Part 22: Detect when the contents of a ThebesLayer have shifted by a subpixel amount and repaint the entire layer when that happens. r=tnikkel
This fixes artifacts when we're scrolling inside scaled content, and includes a test for that (which fails without
this code change).
2011-06-23 00:11:28 +12:00
Robert O'Callahan 612c9f5ad3 Bug 637852. Part 21: Skip invalidation if aRegionToInvalidateIsEmpty (note that ScaleRoundOut on an empty bounds rect can return a non-empty rect). r=tnikkel 2011-06-23 00:11:28 +12:00
Robert O'Callahan 9f092ece3e Bug 637852. Part 18: Support computing the "residual transform" for a ThebesLayer --- the difference between its snapped transform and the ideal transform --- and use it to align ThebesLayer drawing for transforms that aren't changing. r=tnikkel
This fixes bug 637597 and probably other bugs.
2011-06-23 00:11:28 +12:00
Robert O'Callahan 50a8bdee8e Bug 637852. Part 17: Tighten up AreLayersMarkedActive so we track exactly what properties are changing. Also, clamp resolution to power-of-2 only if the frame's transform has a scale. r=tnikkel
This lets us avoid clamping the scale in more situations. We should only clamp the scale when we think
the scale is changing due to a changing transform --- the goal of clamping is to not have to redraw the content
too often when the content is zooming in or out.
2011-06-23 00:11:28 +12:00
Robert O'Callahan 08cb8f63ce Bug 637852. Part 12: Dump layer trees and display lists to stdout instead of stderr so that they stay in order with window.dump() and other output. r=tnikkel 2011-06-23 00:11:28 +12:00
Robert O'Callahan 9ddbfbb285 Bug 637852. Part 6: Implement resolution scaling in FrameLayerBuilder. r=tnikkel
FrameLayerBuilder::BuildContainerLayerFor takes responsibility for resolution scaling. The ContainerParameters
passed in are added to any transform requested. Then we extract the scale part of the transform, round the scale
up to the nearest power of two if the transform may be actively animated (so we don't have to redraw layer contents
constantly), pass that scale down to be applied by each child and set the residual transform on the ContainerLayer.

For child layers built via BuildLayer, we just pass the requested scale factor in via the ContainerParameters.
If the returned layer is a ContainerLayer then BuildLayer is guaranteed to have already done necessary scaling.
If the returned layer is not a ContainerLayer then we apply the scale ourselves by adding the scale to the
child layer's transform.

For child ThebesLayers containing non-layer display items, we scale the drawing of those display items so that
the child ThebesLayers are simply larger or smaller (larger or smaller visible regions).

We have to scale all visible rects, clip rects etc that are in the coordinates of ThebesLayers or the parent
ContainerLayer. To keep things simple we do this whenever we convert from appunits to integer layer coordinates.

When a ThebesLayer's resolution changes we need to rerender the whole thing.

nsDisplayList::PaintForFrame needs to respect the presshell's resolution setting. We do that by building a layer tree
with a ContainerParameters requesting a scale up by the presshell resolution; once that layer tree is built, we
adjust the root layer transform to scale back down by the resolution.
2011-06-23 00:11:27 +12:00
Robert O'Callahan 723e5c86ee Bug 637852: Part 5: Create ContainerParameters structure to carry resolution scale factors through layer creation. r=tnikkel
This patch shouldn't change any behavior. It just passes the ContainerParameters around, which will contain scale factors that should have been
applied when BuildLayer returns a ContainerLayer.

This patch also adds an aTransform parameter to BuildContainerLayerFor, which nsDisplayTransform uses to set the
transform for the ContainerLayer. This way BuildContainerLayerFor knows what the container's transform is going to be
before constructing the children, which in the next patch will let us construct the children with the right resolution.
2011-06-23 00:11:27 +12:00
Benjamin Stover 2d4a3eb67a Bug 655864 Password field is not masked immediately and shows artifacts, when typing past the end of the field r=roc 2011-05-18 15:54:31 -07:00
Robert O'Callahan a3d1ab8a34 Bug 657780. Silence pldhash warnings by shrinking ThebesLayerItemsEntry. r=tnikkel 2011-05-18 17:48:43 +12:00
Robert O'Callahan ee46b56186 Bug 648483. Record the transform used when we last painted a layer and use that to control what needs to be invalidated in the layer. r=tnikkel 2011-05-17 11:05:56 +12:00
Zack Weinberg a8dd50e303 Bug 651017, part 7: remove nsDeviceContext::CreateRenderingContextInstance and the CreateRenderingContext overload that takes a widget.
--HG--
rename : gfx/src/nsThebesDeviceContext.cpp => gfx/src/nsDeviceContext.cpp
rename : gfx/src/nsThebesDeviceContext.h => gfx/src/nsDeviceContext.h
extra : rebase_source : 6be7fe432488dcf2fb5b2faa0e178dccab480285
2011-04-16 21:08:22 -07:00
Robert O'Callahan a7b4f1246b Bug 641426. Part 5: Avoid operator== where possible to distinguish between 'equal edges' and 'equal areas' for rectangles. r=dbaron,sr=cjones 2011-04-19 15:07:23 +12:00
Zack Weinberg 1628ea1551 Bug 266236 part 9: Move nsBoundingMetrics to its own header and prune inclusions of nsRenderingContext.h.
--HG--
rename : gfx/src/nsThebesRenderingContext.cpp => gfx/src/nsRenderingContext.cpp
rename : gfx/src/nsThebesRenderingContext.h => gfx/src/nsRenderingContext.h
extra : rebase_source : 92660748436f03475e011184e2828f1db0ad63e0
2011-04-07 18:04:40 -07:00
Jan Küchler c510bc3046 Bug 266236 part 3: Mechanical rename of nsIRenderingContext and nsThebesRenderingContext to nsRenderingContext. Mechanical substitution of nsRefPtr<nsRenderingContext> for nsCOMPtr<nsRenderingContext>.
--HG--
rename : gfx/src/nsThebesRenderingContext.cpp => gfx/src/nsRenderingContext.cpp
extra : rebase_source : 34884bfcafd885feaf73300bc7246cd192062a48
2011-04-07 18:04:40 -07:00
Benjamin Stover 5dbc4242ca Bug 649583 Panning regression on google reader in 2011-04-12 nightly r=roc 2011-04-13 14:12:22 -07:00
Oleg Romashin 863e12aca2 Bug 607417 - Part1: position:fixed frames mark layers r=roc
--HG--
extra : rebase_source : dbbff8810bafd165a48c34924d98f5c87702ef3f
2011-04-05 23:00:25 -06:00
Robert O'Callahan f55223784a Bug 622072. Part 3: Support empty transactions for canvas layers. r=tnikkel
The basic idea is that whenever a layer transaction updates the window, we clear out the invalidation state for the canvas rendering context,
using a DidTransactionCallback registered on the layer(s) for the canvas, which calls MakeContextClean.

The DidTransactionCallbacks are directed to the user data attached to the Layer, which holds a strong reference to the canvas element. This
ensures that the element lives as long as the layer. Layers are destroyed when the presentation is torn down (including if the frame is destroyed),
so we can't have a leak here. The reference to the canvas element is only strong because the layer might briefly outlive the frame (the layer
won't be destroyed until the next paint of the window).

This patch moves responsibility for calling CanvasLayer::Updated and nsFrame::MarkLayersActive from the canvas context to nsHTMLCanvasElement::InvalidateFrame.
We call Updated on the retained CanvasLayer, if there is one; any other CanvasLayers created for this canvas would only be used once, and have Updated
called on them in BuildLayer when created.
2011-03-28 12:59:47 +13:00
Robert O'Callahan c54d24db4b Bug 641770. Apply correct clip rect to a layerized image. r=tnikkel 2011-04-01 10:33:46 +13:00
Ehsan Akhgari acac18d785 Back out bug 622072 because it caused bug 645987 2011-03-29 14:31:53 -04:00
Robert O'Callahan 46f6cf879d Bug 622072. Part 3: Support empty transactions for canvas layers. r=tnikkel
The basic idea is that whenever a layer transaction updates the window, we clear out the invalidation state for the canvas rendering context,
using a DidTransactionCallback registered on the layer(s) for the canvas, which calls MakeContextClean.

The DidTransactionCallbacks are directed to the user data attached to the Layer, which holds a strong reference to the canvas element. This
ensures that the element lives as long as the layer. Layers are destroyed when the presentation is torn down (including if the frame is destroyed),
so we can't have a leak here. The reference to the canvas element is only strong because the layer might briefly outlive the frame (the layer
won't be destroyed until the next paint of the window).

This patch moves responsibility for calling CanvasLayer::Updated and nsFrame::MarkLayersActive from the canvas context to nsHTMLCanvasElement::InvalidateFrame.
We call Updated on the retained CanvasLayer, if there is one; any other CanvasLayers created for this canvas would only be used once, and have Updated
called on them in BuildLayer when created.
2011-03-28 12:59:47 +13:00
Benjamin Stover 9bb1728211 Bug 618975 Pan overflow elements in parent process r=cjones r=tn sr=roc a=blocking-fennec 2011-03-15 16:20:19 -07:00
Chris Jones 41902e0b90 Bug 637822: Translate invalidated content by the offset at which it was made valid. r=roc a=b 2011-03-11 01:58:29 -06:00
Doug Turner 2d4ad5ac6e Backing out 99f6b3acc464 (bug 618975). Bug This caused a reftest crash. a=bustage 2011-03-08 22:02:50 -08:00
Benjamin Stover 975ed8713b Bug 618975 Pan overflow elements in parent process r=cjones r=tn sr=roc a=blocking-fennec 2011-03-08 21:28:18 -08:00
Robert O'Callahan 6d646878f1 Bug 630835. Make BuildLayer responsible for setting a visible region on the layer, and let FrameLayerBuilder only reduce it. r=tnikkel,a=blocking
This avoids problems with FrameLayerBuilder making the visible region bigger than we expected, invalidating CONTENT_OPAQUE flags set on the layer.
In particular, we had been using TransformBounds to compute the new visible region, and for non-axis-aligned transforms this gives us a visible
region which contains areas not actually painted by the layer contents.
2011-02-23 18:38:09 +13:00
Robert O'Callahan 557afc8ade Bug 634232. Call WillEndTransaction/DidEndTransaction notifications for FrameLayerBuilder's temporary layer managers. r=tnikkel a=hardblocker 2011-02-20 19:28:00 -08:00
Robert O'Callahan 2a4ecbd8d9 Bug 622542. Remove unused FrameLayerBuilder::InvalidateAllThebesLayerContents API. r=tnikkel a2.0=blocking 2011-02-10 15:21:07 -08:00
Robert O'Callahan 54035c1eda Bug 625672. Part 2: Build temporary layer manager to render inactive layers after we've recomputed visibility. r=tnikkel,a=blocker 2011-02-10 21:58:11 +13:00
Robert O'Callahan 04d3aa9c17 Bug 618722. background-attachment:fixed display items rendered via temporary layer managers can't have their scrolling taken care of via the layer system, so make sure we invalidate them when we scroll in their document. r=tnikkel,a=blocker 2011-02-10 21:58:11 +13:00
Timothy Nikkel 9faea4ebfa Bug 628745. Replace rounded rect clips with their non-rounded cousins whenever possible. r=roc a=roc 2011-01-26 12:36:11 -06:00
Robert O'Callahan 63cc1f7d1a Bug 621601. Part 1: Change empty transaction API to EndEmptyTransaction. r=bas,tnikkel,a=joe 2011-01-19 21:27:54 +13:00
Matt Woodrow 0f65fdc7c4 Bug 586683 - Part 4 - Move images into a separate ImageLayer when they are the only item in a ThebesLayer. r=roc a=blocking2.0 2011-01-18 10:47:18 +13:00
Robert O'Callahan a076eb9ea8 Bug 625288. Part 2: Report that -moz-win-glass and -moz-win-borderless-glass are uniform with opacity 0, i.e. they don't paint anything. Skip such display items when accumulating the visible region of a layer. r=tnikkel,a=blocking 2011-01-16 23:38:45 +13:00
Robert O'Callahan f50dfece5f Bug 615794. Part 1.5: Fix drawing of mForcedBackgroundColor to only fill the bounds of the visible region. r=tnikkel a=blocking
It's not correct to completely fill the destination context with the
mForcedBackgroundColor. FindOpaqueBackgroundColorFor only checks that
the bounds of the layer's visible region can be filled with the color.
Drawing outside the bounds of the visible region may not necessarily
be ignored (see comments on Layer::SetVisibleRegion).
2011-01-04 23:35:57 +13:00
Robert O'Callahan ee8f74d861 Bug 615794. Part 1: Be conservative when converting visible regions and opaque regions from appunits to pixels. r=tnikkel a=blocking 2011-01-04 23:35:57 +13:00
Robert O'Callahan 5dc51e4b4d Bug 602757. Part 6: Don't limit complexity of opaque region when adding opaque chrome display items. r=tnikkel,a=blocking 2011-01-03 14:48:09 +13:00
Robert O'Callahan f38f22f331 Bug 602757. Part 5: Change HasText to GetComponentAlphaBounds. r=tnikkel,sr=dbaron,a=blocking 2011-01-03 14:48:09 +13:00
Robert O'Callahan a352316479 Bug 602757. Part 3: Change IsOpaque to GetOpaqueRegion so we can get useful opaque regions for content that uses border-radius. r=tnikkel,sr=dbaron,a=blocking 2011-01-03 14:48:09 +13:00
Robert O'Callahan b81ded8225 Bug 602757. Part 2: Detect display items over the transparent part of a window, and disable usage of component alpha (i.e., subpixel antialiasing) for those items. r=tnikkel,a=blocking 2011-01-03 14:48:09 +13:00
Robert O'Callahan c6700e764d Bug 612840. Part 4: Invert the meaning of CONTENT_NO_TEXT_OVER_TRANSPARENT and rename it. r=vlad 2010-12-20 14:26:14 +13:00
Robert O'Callahan 3259bd6e70 Bug 612840. Part 3: Make Layer::CONTENT_NO_TEXT_OVER_TRANSPARENT applicable to all layer types, and set CONTENT_NO_TEXT_OVER_TRANSPARENT on container layers. r=tnikkel,r=vlad 2010-12-20 14:26:14 +13:00
Robert O'Callahan d8ccf4a713 Bug 612840. Part 1: Remove CONTENT_NO_TEXT flag since it's not really used. Also remove ShouldRetainTransparentSurface and related code; we'll assume that when text is over opaque pixels in an RGBA surface we can always paint it with subpixel AA --- and make it so in later patches. r=vlad 2010-12-20 14:26:13 +13:00
Bas Schouten 385f364b09 Bug 595277 - Part -1: Keep the reference to our LayerManager inside LayerManagerData. r=roc 2010-12-08 03:24:05 +01:00
Oleg Romashin b19d4e2f0c Bug 607653 - avoid temporary fbos/textures on transformed layers, when possible. part1 r=roc a=apporval2.0 2010-11-24 11:35:21 +02:00
Justin Lebar 9167d8acf3 Backed out changeset a5ec817740f0. a=orange 2010-11-29 09:08:24 -08:00
Oleg Romashin 8a52f4b99f Bug 607653 - avoid temporary fbos/textures on transformed layers, when possible. r=roc a=approval2.0 2010-11-24 11:35:21 +02:00
Dave Townsend fb8abb6e9d Backing out changeset 8fff1c186b30 from bug 607653 due to reftest failures on OSX. a=bustage 2010-11-24 16:19:41 -08:00
Oleg Romashin bb4bf02096 Bug 607653 - avoid temporary fbos/textures on transformed layers, when possible. r=roc a=approval2.0 2010-11-24 11:35:21 +02:00
Chris Jones 52d0f01838 Bug 550611: Make nsTArray optionally infallible. sr=bsmedberg a=blocking
--HG--
rename : xpcom/glue/nsTArray.cpp => xpcom/glue/nsTArray-inl.h
2010-11-08 20:48:59 -06:00
Felipe Gomes 82fe7096ba Bug 601603. Part 5 - Ensure that the layer that holds the window background is never opaque for glass windows. r=roc a=beta8 2010-10-19 15:02:25 -02:00
Matt Woodrow 8a60164429 Bug 594983. Look inside display sublists to determine whether there is text for the layer. r=roc,a=blocking 2010-10-11 13:58:20 +13:00
L. David Baron 580bc10d69 Bug 597676. If there's no rootPresContext, we should never detect DOM modification. Makes printing paint again. r=dbaron a=blocking2.0:beta7 2010-09-18 11:43:17 -07:00
Robert O'Callahan 368f4de891 Bug 594774. Detect DOM changes during painting, and abort painting ASAP when that happens. r=dbaron a=blocking 2010-09-17 12:09:08 -07:00
Oleg Romashin 8c88c718ff Merge with mozilla central 2779c55431a4, no conflicts 2010-09-10 22:32:25 -07:00
L. David Baron dd64617da3 Add a (wrapping) display item that clips its contents to the curvature of a border-radius. (Bug 459144, patch 13) r=roc a2.0=blocking2.0:beta6 2010-09-09 08:21:46 -07:00
Chris Jones 0c28df6c86 Bug 590294, part 3: Keep ContainerLayer type info around in a few places. r=roc 2010-09-03 15:10:45 -05:00
Robert O'Callahan b9aeeda471 Bug 579276. Part 5: Set CONTENT_NO_TEXT and CONTENT_NO_TEXT_OVER_TRANSPARENT flags. r=tnikkel 2010-09-02 21:18:40 +12:00
Robert O'Callahan be2d05f9a8 Bug 579276. Part 3: Change Set/IsOpaqueContent API to a more generic Get/SetContentFlags API. r=cjones,sr=vlad 2010-09-02 21:18:40 +12:00
Robert O'Callahan 61c4b7a2c4 Bug 579276. Part 4: Move nsDisplayItem parameter down to ThebesLayerData::Accumulate. r=tnikkel 2010-09-02 21:18:39 +12:00
Robert O'Callahan add75cf1da Bug 579276. Part 2: If a transparent layer is over a solid background color, hoist that color into the layer to make it opaque. r=tnikkel 2010-09-02 21:18:39 +12:00
Robert O'Callahan c649008789 Bug 579276. Part 1: Change layer/layermanager user data API to use keys and values. r=cjones,sr=vlad 2010-09-02 21:18:39 +12:00
Mounir Lamouri bbe054ccfc Bug 594109 - FrameLayerBuilder.cpp uses TYPE_MATHML_CHAR_FOREGROUND outside of #ifdef MOZ_MATHML. r=roc a=bustage 2010-09-08 19:44:47 +02:00
Robert O'Callahan cfb7f48514 Backing out bug 579276. a=me 2010-09-02 23:14:25 +12:00
Robert O'Callahan 396aec34d8 Bug 579276. Part 5: Set CONTENT_NO_TEXT and CONTENT_NO_TEXT_OVER_TRANSPARENT flags. r=tnikkel 2010-09-02 21:18:40 +12:00
Robert O'Callahan 93076398d1 Bug 579276. Part 3: Change Set/IsOpaqueContent API to a more generic Get/SetContentFlags API. r=cjones,sr=vlad 2010-09-02 21:18:40 +12:00
Robert O'Callahan 9558a29d0c Bug 579276. Part 4: Move nsDisplayItem parameter down to ThebesLayerData::Accumulate. r=tnikkel 2010-09-02 21:18:39 +12:00
Robert O'Callahan 0cbed2f656 Bug 579276. Part 2: If a transparent layer is over a solid background color, hoist that color into the layer to make it opaque. r=tnikkel 2010-09-02 21:18:39 +12:00
Robert O'Callahan bc14460ac4 Bug 579276. Part 1: Change layer/layermanager user data API to use keys and values. r=cjones,sr=vlad 2010-09-02 21:18:39 +12:00
timeless@mozdev.org 43c2fbb417 Bug 587483 warning: comparison between signed and unsigned integer expressions in FrameLayerBuilder. r=roc,a=roc 2010-09-02 16:46:53 +12:00
Robert O'Callahan e25a9a8bef Bug 592941. Fix performance regression by ensuring we create a ThebesLayerInvalidRegionProperty for frames with new container layers. r=tnikkel,a=blocking 2010-09-02 16:43:45 +12:00
Robert O'Callahan fb37a1e30f Bug 579323. Part 1.4: Switch nsIFrameFrame users to use nsSubDocumentFrame.h. r=tnikkel
--HG--
extra : rebase_source : de526602586c70b994a061bbb8a7ca2731c72bbd
2010-08-31 12:49:07 +12:00
Robert O'Callahan 5023daae20 Bug 579323. Part 1: Add FrameLayerBuilder::InvalidateThebesLayersInSubtree, and call it from InvalidateOverflowRect. r=tnikkel,sr=dbaron
--HG--
extra : rebase_source : c1dbc5b625e23d55ba030709f5cd429122977685
2010-08-31 12:46:26 +12:00
Timothy Nikkel 987f68275e Bug 579663. Part 9. Simplify ProcessDisplayItems because all items in a container layer have the same app units per dev pixel. r=roc 2010-08-08 13:49:07 -05:00
Timothy Nikkel 3b953e9755 Bug 579663. Part 8. Simplify FrameLayerBuilder::DrawThebesLayer because it does not have to deal with items at different AppUnitsPerDevPixel ratios. r=roc 2010-08-08 13:49:07 -05:00
Timothy Nikkel 14511d2a0b Bug 579663. Part 7. Assert AppUnitsPerDevPixel is constant in container layers. r=roc 2010-08-08 13:49:07 -05:00
Timothy Nikkel 9499c419ae Bug 579663. Part 3. Use the right AppUnitsPerDevPixel for zoom items. r=roc 2010-08-08 13:49:06 -05:00
Timothy Nikkel 9645a5cf5c Bug 579663. Part 1. Remove unused offset param from GetActiveScrolledRootFor. r=roc 2010-08-08 13:49:06 -05:00
Chris Jones f16c7feac5 Bug 570620, part a: Fix an assertion that will soon no longer hold and remove obsoleted already_AddRefed idiom in two places. r=roc 2010-08-05 17:11:23 -05:00
Robert O'Callahan 692ed55c12 Bug 580494. Avoid creating an empty ThebesLayer when an inactive nsDisplayItem::BuildLayer returns null. r=tnikkel
--HG--
extra : rebase_source : a22225bb3b5c2bbc12ab2f9b50594083143dbdf0
2010-08-03 15:33:24 +12:00
Matt Woodrow 104ade3438 Bug 505115. Use layers to render active 2D transforms. r=roc,dbaron 2010-08-02 15:07:04 +12:00
Robert O'Callahan 1524120859 Bug 579349. Track the 'drawn region' of content in layers, whhich ignores visibility, and use it to determine which layer a display item should be placed in. r=tnikkel 2010-08-02 15:06:58 +12:00
Ginn Chen d5b0c3ecd1 Bug 580546 FrameLayerBuilder.cpp failed to compile with Sun Studio 12 r=roc a=bsmedberg 2010-07-27 17:20:55 +08:00
Chris Jones ad15c41672 Bug 567421, part 2: Implement Dump[Self](FILE*) and Log[Self]() methods for layers. r=roc 2010-07-21 13:06:33 -05:00
Timothy Nikkel 8672c57994 Convert to calls of GetOffsetTo from retained layers to GetOffsetToCrossDoc. r=roc on irc 2010-07-18 21:23:48 -05:00
Robert O'Callahan bcfd77d28a Bug 564991. Part 39: Accumulate the full opaque rect of opaque display items, and don't simplify away opaque areas of display items low in z-order. r=tnikkel 2010-07-16 09:08:11 +12:00
Robert O'Callahan 7629433417 Bug 564991. Part 38: Make invalidation-during-paint work reliably. r=mats,sr=dbaron 2010-07-16 09:08:11 +12:00
Robert O'Callahan 306a6d44c0 Bug 564991. Part 34: Make sure that ThebesLayerBuffers are always allocated as similar surfaces to the widget surface, whenever possible. r=cjones 2010-07-16 09:08:10 +12:00
Robert O'Callahan 57f54e9cc3 Bug 564991. Part 33: Copy data out of hashtable in DrawThebesLayer in case hashtable is modified during the method. r=tnikkel 2010-07-16 09:08:10 +12:00
Robert O'Callahan 09ce1c5031 Bug 564991. Part 31: Don't cull display items in nsDisplayList::ComputeVisibility. r=mats 2010-07-16 09:08:09 +12:00
Robert O'Callahan de827321f1 Bug 564991. Part 26: Put background-attachment:fixed backgrounds that propagated to the canvas in their own layer. r=mats,sr=dbaron 2010-07-16 09:08:06 +12:00
Robert O'Callahan 1b38f406bd Bug 564991. Part 23: Introduce the concept of 'inactive' layers. r=mats,sr=dbaron 2010-07-16 09:08:05 +12:00
Robert O'Callahan 0964ffd63b Bug 564991. Part 17: Reimplement ColorLayers. r=mats 2010-07-16 09:08:03 +12:00
Robert O'Callahan 2e3d02e038 Bug 564991. Part 13: Optimize invalidation to avoid repainting ThebesLayer contents sometimes. r=mats,sr=dbaron 2010-07-16 09:07:53 +12:00
Robert O'Callahan 6824d17ea0 Bug 564991. Part 9: Retain layer trees. r=tnikkel,sr=mats 2010-07-16 09:07:51 +12:00
Robert O'Callahan 496811aed4 Bug 564991. Part 2: Create retained layer API: methods on FrameLayerBuilder that frames can use to access, reuse and invalidate retained layers. r=mats,sr=vlad 2010-07-16 09:07:46 +12:00
Robert O'Callahan b12eec77e4 Bug 564991. Part 6: Make BasicLayers support retained ThebesLayer contents. r=cjones,sr=vlad 2010-03-04 10:37:04 +13:00
Robert O'Callahan 4886cf3d1c Bug 564993. Fix build error, and fix Bas' review comment. 2010-05-24 14:25:58 +12:00
Robert O'Callahan 3c5b01221c Port over part of changeset eaea9e3806a3 to FrameLayerBuilder to fix reftest failure in ogg-video/clipping-1a.html 2010-05-24 14:13:00 +12:00
Robert O'Callahan b32027fed6 Bug 564993. Part 5: Change ThebesLayer painting to be callback-based; move layer tree construction to FrameLayerBuilder. r=Bas,mats,sr=vlad 2010-05-21 15:20:48 +12:00
Robert O'Callahan 01e9dabdad Backed out changeset b37bdb032fe7 2010-05-24 10:53:05 +12:00
Robert O'Callahan 0417d4868e Bug 564993. Part 5: Change ThebesLayer painting to be callback-based; move layer tree construction to FrameLayerBuilder. r=Bas,mats,sr=vlad 2010-05-21 15:20:48 +12:00
Robert O'Callahan 20c2e464f7 Backed out changeset efa8719a93d2 2010-05-21 16:34:23 +12:00
Robert O'Callahan 6391e1262a Bug 564993. Part 5: Change ThebesLayer painting to be callback-based; move layer tree construction to FrameLayerBuilder. r=Bas,mats,sr=vlad 2010-05-21 15:20:48 +12:00