Commit Graph

48 Commits

Author SHA1 Message Date
Ehsan Akhgari
2a602a5685 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
bba1204f29 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
d8e503c38b 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
Robert O'Callahan
0c48fabd49 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
fcf2510a5d 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
93793566d0 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
a86e639dce 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
23bf97f80c Bug 657780. Silence pldhash warnings by shrinking ThebesLayerItemsEntry. r=tnikkel 2011-05-18 17:48:43 +12:00
Robert O'Callahan
ebb22db890 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
Robert O'Callahan
c957ae039e 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
Benjamin Stover
3dc5b1f7a2 Bug 642246 Don't build ThebesLayers for elements with no displayports r=roc 2011-04-11 13:53:01 -07:00
L. David Baron
ad4318958b Back out 1edfae12015b (Bug 642246) due to mobile unittest orange. 2011-04-09 18:21:27 -07:00
Benjamin Stover
3270dd31cd Bug 642246 Don't build ThebesLayers for elements with no displayports r=roc 2011-04-09 12:38:28 -07:00
Robert O'Callahan
c6e4498a20 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
Ehsan Akhgari
931bd6ee19 Back out bug 622072 because it caused bug 645987 2011-03-29 14:31:53 -04:00
Robert O'Callahan
4ca813ae6e 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
e9b77710b0 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
Doug Turner
eff01baa10 Backing out 99f6b3acc464 (bug 618975). Bug This caused a reftest crash. a=bustage 2011-03-08 22:02:50 -08:00
Benjamin Stover
6fd6388bc0 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
20b9397753 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
b9be837d8c Bug 622542. Remove unused FrameLayerBuilder::InvalidateAllThebesLayerContents API. r=tnikkel a2.0=blocking 2011-02-10 15:21:07 -08:00
Robert O'Callahan
9fa8b97779 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
28603731b2 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
45e07ae313 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
409b6ce451 Bug 621601. Part 1: Change empty transaction API to EndEmptyTransaction. r=bas,tnikkel,a=joe 2011-01-19 21:27:54 +13:00
Robert O'Callahan
e946441ff1 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
Mats Palmgren
698eb966cf Bug 449734 part 1 - Preserve presentation when dragging a tab between browser windows. r=roc a=blocking2.0:betaN 2010-09-18 13:28:49 +02:00
Robert O'Callahan
c9fe10ac6d 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
497f2db326 Merge with mozilla central 2779c55431a4, no conflicts 2010-09-10 22:32:25 -07:00
L. David Baron
a9d5fab154 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
c3e279df85 Bug 590294, part 3: Keep ContainerLayer type info around in a few places. r=roc 2010-09-03 15:10:45 -05:00
Mats Palmgren
76f0893448 Backing out bug 449734 due to unexpected orange. a=ted 2010-09-03 18:13:49 +02:00
Mats Palmgren
d234af154c Bug 449734 - Preserve presentation when dragging a tab between browser windows. r=roc a=blocking2.0:betaN 2010-09-03 16:22:00 +02:00
Robert O'Callahan
0f5f9e5391 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
f566520efb 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
Robert O'Callahan
44555f22b8 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
Chris Jones
544264704f Bug 567421, part 2: Implement Dump[Self](FILE*) and Log[Self]() methods for layers. r=roc 2010-07-21 13:06:33 -05:00
Robert O'Callahan
2b0f4a408a 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
d09c39d0a9 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
1917c1d836 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
cc872e7c9e Bug 564991. Part 9: Retain layer trees. r=tnikkel,sr=mats 2010-07-16 09:07:51 +12:00
Robert O'Callahan
a7c0fe60ac 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
8442c7897c 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
5cb6f06477 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
491e959191 Backed out changeset b37bdb032fe7 2010-05-24 10:53:05 +12:00
Robert O'Callahan
f3c689bd37 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
6709a65d60 Backed out changeset efa8719a93d2 2010-05-21 16:34:23 +12:00
Robert O'Callahan
ddda37f6c8 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