Commit Graph

164 Commits

Author SHA1 Message Date
Matt Woodrow
e978622113 Bug 539356 - Part 12 - Remove unnecessary LayerManagerLayerBuilder indirection. r=roc 2012-08-29 17:48:15 +12:00
Matt Woodrow
49d4c24594 Bug 539356 - Part 9 - Implement DLBI. r=roc,bz,jwatt 2012-08-29 17:38:58 +12:00
Phil Ringnalda
16e0947c04 Back out 85d6cbd01d39, 56fc051c1932, a2ad17b87332 (bug 781053) for OS X debug assertions and crashes
--HG--
extra : rebase_source : ab24a2f8e9eddcf33ea39344abb7afbf400bf6e0
2012-09-24 21:23:05 -07:00
Phil Ringnalda
59da0af0b1 Back out 8bd13443d0bc (bug 579517) to get a clean backout
--HG--
extra : rebase_source : 63c8087f0a6de5adeddb8762ff9e410b2b818e22
2012-09-24 21:21:10 -07:00
Ehsan Akhgari
3eee84e809 Bug 579517 follow-up: Remove NSPR types that crept in 2012-09-24 17:55:10 -04:00
Matt Woodrow
aed7d4ce0a Bug 781053 - Part 2 - Trigger empty transactions when an animated image in an ImageLayer changes frame. r=roc 2012-09-25 08:31:30 +12:00
Matt Woodrow
8684475c74 Bug 788044 - Make inactive layer subtrees relative to the ContainerLayer, not the reference frame. r=roc 2012-09-17 10:25:33 +12:00
Matt Woodrow
087d06c226 Bug 789396 - Don't overwrite the existing mContainerLayerGeneration value on ThebesLayerItemsEntrys. r=roc 2012-09-12 09:17:26 +12:00
Ehsan Akhgari
c48204a6a9 Bug 579517 follow-up: Remove NSPR types that crept in
--HG--
extra : rebase_source : adad9af01d9168a14d87c201c1bd51a3a7a768f5
2012-08-29 10:56:51 -04:00
Chris Lord
306548b14f Bug 785333 - Make sure layers are only associated with a single frame. r=roc
Use Layer user-data to ensure that a Layer doesn't end up being found multiple
times for different frames during construction.
2012-08-29 11:53:34 +01:00
Chris Lord
e7f9cfe919 Bug 785333 - Keep track of merged frames with all display items. r=roc
This changes the display-item storage to store layers against the underlying
frame and all merged frames of an item (and similarly, to retrieve them against
all frames of an item).
2012-08-29 11:53:27 +01:00
Gavin Sharp
a9400c350e Back out bug 785333 (revisions 79345542f853 and a1756976e61d) to fix crasher bug 785626 2012-08-27 16:41:19 -07:00
Chris Lord
161d1ea386 Bug 785333 - Keep track of merged frames with all display items. r=roc
This changes the display-item storage to store layers against the underlying
frame and all merged frames of an item (and similarly, to retrieve them against
all frames of an item).
2012-08-24 16:17:22 +01:00
Chris Lord
777670dafd Bug 781516 - Remove DisplayItemDataEntry.mIsMergedFrame. r=roc
This is unnecessary as it just duplicates the functionality of
mIsSharingContainerLayer.
2012-08-24 11:59:37 +01:00
Chris Lord
e285e5de5c Bug 771154 - Invalidate only the frame rect when new frames come into view. r=roc
Instead of forcing a full-layer invalidation when new frames appear, invalidate
only the bounds of the frame. Invalidating untrusted geometry still causes a
full-layer invalidation.
2012-08-23 12:14:47 +01:00
Chris Lord
d736d8336e Bug 781516 - Fix invalidation caused by unprocessed merged frames. r=roc
As clip items aren't processed, they have no associated layer entries. This is
a problem when a clip item's underlying frame is the same as one that gets
merged into a container layer, as display-item data will be created, but no
layer entry will be added. This will cause it to be removed on the next
layer-build, and cause a full invalidation.

Fix this by adding an 'mIsMergedFrame' entry to DisplayItemDataEntry and setting
it on all merged frames in BuildContainerLayerFor. This property stops the
entry from being removed when it gets updated.
2012-08-23 09:30:53 +01:00
Ehsan Akhgari
8c296bbcd4 Bug 579517 - Part 1: Automated conversion of NSPR numeric types to stdint types in Gecko; r=bsmedberg
This patch was generated by a script.  Here's the source of the script for
future reference:

function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
       ! -wholename "*security/nss*" \
       ! -wholename "*/.hg*" \
       ! -wholename "obj-ff-dbg*" \
       ! -name nsXPCOMCID.h \
       ! -name prtypes.h \
         -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 PRInt8 int8_t
convert PRUint8 uint8_t
convert PRInt16 int16_t
convert PRUint16 uint16_t
convert PRInt32 int32_t
convert PRUint32 uint32_t
convert PRInt64 int64_t
convert PRUint64 uint64_t

convert PRIntn int
convert PRUintn unsigned

convert PRSize size_t

convert PROffset32 int32_t
convert PROffset64 int64_t

convert PRPtrdiff ptrdiff_t

convert PRFloat64 double
2012-08-22 11:56:38 -04:00
David Zbarsky
b27894f902 Bug 784004 - Don't include Layers.h everywhere Part 3 r=nical 2012-08-21 00:06:46 -04:00
Chris Lord
07153819b1 Bug 777260 - Fix invalidations on transform items in container layers. r=roc
Since Bug 758620, it's possible for an nsDisplayTransform to appear as the
child of a container layer. This caused problems when it was inactive, as the
invalidation would not be transformed in this case.

Fix this in FrameLayerBuilder by mandating that InvalidateThebesLayerContents
takes the untransformed invalidation and apply the transform in
BuildContainerLayer.
2012-08-13 22:54:38 -04:00
Chris Lord
bd93048cf7 Bug 775431 - Make MOZ_DUMP_PAINT_LIST output terminal-friendly. r=mattwoodrow
Only output in HTML if we're dumping to a file, otherwise output as it did
before the HTML output change was made.
2012-08-07 18:57:26 +01:00
Robert O'Callahan
4648ff3143 Bug 776836. When invalidating ThebesLayers due to an appunits-per-dev-pixel change, we can't trust the frame geometry. r=mattwoodrow 2012-08-07 23:07:07 +12:00
Robert O'Callahan
e88fd7de46 Bug 772679. RestrictToLayerPixels needs to accurately convert between appunits scroll offsets and ThebesLayer pixel coordinates. r=tnikkel
Change GetThebesLayerResolutionForFrame to GetThebesLayerScaleForFrame,
which just returns a scale. Ensure that the scale is as accurate as possible
even if dedicated layers for scrolled content (or any layers at all) have not
been created yet, by taking into account transforms that have not yet
generated layers. This makes the decisions made by
nsGfxScrollFrameInner::ScrollToImpl independent of whether there is
currently an active layer for the scrolled content (or much more nearly so).
In nsGfxScrollFrameInner::ScrollToImpl, do not use the current internal
fractional offset of the ThebesLayer, which is in a mostly unrelated
coordinate space to our scroll positions. Instead, just try to make sure
that the previous and next scroll position differ by a whole number of
layer pixels.
2012-08-05 00:26:38 +12:00
Ed Morley
1d8d82865d Backout 6ea008b301da, 14d17919e235, b15fb3603bfe & f89ae41eed63 (bug 772679) for turning test_offsets.html perma-orange on native Android mochitest-7 2012-08-05 14:35:08 +01:00
Robert O'Callahan
078dd6ac15 Bug 772679. RestrictToLayerPixels needs to accurately convert between appunits scroll offsets and ThebesLayer pixel coordinates. r=tnikkel
Change GetThebesLayerResolutionForFrame to GetThebesLayerScaleForFrame,
which just returns a scale. Ensure that the scale is as accurate as possible
even if dedicated layers for scrolled content (or any layers at all) have not
been created yet, by taking into account transforms that have not yet
generated layers. This makes the decisions made by
nsGfxScrollFrameInner::ScrollToImpl independent of whether there is
currently an active layer for the scrolled content (or much more nearly so).
In nsGfxScrollFrameInner::ScrollToImpl, do not use the current internal
fractional offset of the ThebesLayer, which is in a mostly unrelated
coordinate space to our scroll positions. Instead, just try to make sure
that the previous and next scroll position differ by a whole number of
layer pixels.
2012-08-05 00:26:38 +12:00
Ms2ger
b549803df7 Back out bug 772679 for crashes. 2012-08-04 15:10:45 +02:00
Robert O'Callahan
a8cf24827e Bug 772679. RestrictToLayerPixels needs to accurately convert between appunits scroll offsets and ThebesLayer pixel coordinates. r=tnikkel
Change GetThebesLayerResolutionForFrame to GetThebesLayerScaleForFrame,
which just returns a scale. Ensure that the scale is as accurate as possible
even if dedicated layers for scrolled content (or any layers at all) have not
been created yet, by taking into account transforms that have not yet
generated layers. This makes the decisions made by
nsGfxScrollFrameInner::ScrollToImpl independent of whether there is
currently an active layer for the scrolled content (or much more nearly so).
In nsGfxScrollFrameInner::ScrollToImpl, do not use the current internal
fractional offset of the ThebesLayer, which is in a mostly unrelated
coordinate space to our scroll positions. Instead, just try to make sure
that the previous and next scroll position differ by a whole number of
layer pixels.
2012-08-05 00:26:38 +12:00
Aryeh Gregor
57c0ad57fb Bug 777292 part 2 - Change all nsnull to nullptr 2012-07-30 17:20:58 +03:00
Matt Woodrow
8ecc9d2eaf Bug 741682 - Flatten component alpha layers into their parent layer with BasicLayers. r=roc 2012-07-23 15:00:36 +12:00
David Zbarsky
7f0f075928 [Bug 774505] Don't include Layers.h everywhere r=cjones 2012-07-18 12:31:40 -04:00
Matt Woodrow
a12f572f37 Bug 539356 - Part 7 - Store FrameLayerBuilder objects on the LayerManager instead of nsDisplayListBuilder. r=roc 2012-07-17 13:03:51 -04:00
Matt Woodrow
0794dcd107 Bug 539356 - Part 5 - Change SVG effects painting to use a LayerManager transaction. r=roc 2012-07-17 13:03:51 -04:00
Chris Lord
15c3324aa3 Bug 772079 - Fix ThebesLayerInvalidRegion being destroyed too soon. r=roc
A comment in ApplyThebesLayerInvalidation says that it preserves the content
of ThebesLayerInvalidRegion, in case there are multiple container layers for
the same frame. SetHasContainerLayer, however, immediately clears said property.

This was causing invalidations to be lost since Bug 758620 on fixed-position
elements, as they were being separated out onto their own layers but were still
merged in the root scroll layer. This is tracked in Bug 769541.

This fixes the problem by storing the new invalid region in DisplayItemDataEntry
and clearing/setting the ThebesLayerInvalidRegion property in the
UpdateDisplayItemData callback from FrameLayerBuilder::WillEndTransaction.
2012-07-14 08:49:05 +01:00
Benoit Girard
5d6dc74a0f Bug 771219 - Restore display items when drawing a thebes layer. r=roc 2012-07-06 13:57:47 -04:00
Ehsan Akhgari
7ca323fbe6 Backout changeset eea5704272d0 (bug 539356) because of performance and correctness regressions 2012-07-03 20:28:32 -04:00
Ehsan Akhgari
70f358a631 Backout changeset 60affaedccc3 (bug 539356) because of performance and correctness regressions 2012-07-03 20:26:55 -04:00
Ehsan Akhgari
514088f9e1 Backout changeset f83491fc735a (bug 539356) because of performance and correctness regressions 2012-07-03 20:25:37 -04:00
Ehsan Akhgari
6ef72aef93 Backout changeset f568fc280fb0 (bug 539356) because of performance and correctness regressions 2012-07-03 20:24:55 -04:00
Ehsan Akhgari
ee77eaaad9 Backout changeset 65410094add4 (bug 539356) because of performance and correctness regressions 2012-07-03 20:19:18 -04:00
Ehsan Akhgari
032c183b13 Backout changeset ce5e9fefee19 (bug 539356) because of performance and correctness regressions 2012-07-03 20:18:34 -04:00
Ehsan Akhgari
388ec767e6 Backout changeset 0c75abcb72ff (bug 539356) because of performance and correctness regressions 2012-07-03 20:17:01 -04:00
Ehsan Akhgari
0ca08d6135 Backout changeset f7599b247eef (bug 539356) because of performance and correctness regressions 2012-07-03 20:10:16 -04:00
Ehsan Akhgari
e556c0c5a0 Backout changeset 2cf9546ee691 (bug 770001) because DLBI is being backed out 2012-07-03 19:40:24 -04:00
Robert O'Callahan
1162a096a1 Bug 770001. When comparing clips, adjust for any change in the ThebesLayer coordinate system. When clips are different, try to accumulate differences intelligently, taking into account that changes in clips outside the bounds of the clipped display item don't matter. r=mattwoodrow
--HG--
extra : rebase_source : d958c629307045f2592ffe658cd1a2e608713cbd
2012-07-02 11:46:21 +12:00
Matt Woodrow
df33b4b071 Bug 539356 - Part 25 - Invalidate display items that have a changed clip. r=roc 2012-06-30 15:06:13 +12:00
Matt Woodrow
b7ecd3eb49 Bug 539356 - Part 14 - Handle multiple widget layer managers retaining data for the same frame. r=roc 2012-06-30 15:06:12 +12:00
Matt Woodrow
574dba78d6 Bug 539356 - Part 12 - Remove unnecessary LayerManagerLayerBuilder indirection. r=roc 2012-06-30 15:06:12 +12:00
Matt Woodrow
56a4c51474 Bug 741682 - Disable component alpha layers with BasicLayers. r=roc 2012-06-30 15:06:12 +12:00
Matt Woodrow
1f0dbc7c74 Bug 539356 - Part 9 - Implement DLBI. r=roc,bz,jwatt 2012-06-30 15:06:11 +12:00
Matt Woodrow
d41fe1225c Bug 539356 - Revert changes made by bug 728983 2012-06-30 15:06:10 +12:00
Matt Woodrow
a571105c89 Bug 539356 - Part 7 - Store FrameLayerBuilder objects on the LayerManager instead of nsDisplayListBuilder. r=roc 2012-06-30 15:06:10 +12:00
Matt Woodrow
f535bd8833 Bug 539356 - Part 5 - Change SVG effects painting to use a LayerManager transaction. r=roc 2012-06-30 15:06:10 +12:00
Nicholas Cameron
01224f6b7a Bug 757347; Add a shutdown hook and remove MaskImageFormat(). r=roc 2012-06-26 14:43:30 +12:00
Nicholas Cameron
2237afc914 Back out bug 757346
--HG--
extra : rebase_source : 8a07c2c56ca9dbc165012b679d421435cc886c2c
2012-06-26 10:54:05 +12:00
Nicholas Cameron
3cd654450f Bug 757347; Add a shutdown hook and remove MaskImageFormat(). r=roc 2012-06-26 09:44:41 +12:00
Nicholas Cameron
eaca72e8fd Bug 757346 - Change from clipping the mask to drawing it. r=roc 2012-05-27 16:55:22 -04:00
Gervase Markham
87620f5676 Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Nicholas Cameron
29f95ca6fd Bug 754488 - Fix warning in FrameLayerBuilder.cpp. r=dholbert 2012-05-14 19:01:05 -04:00
Robert O'Callahan
2c975e4eb4 Bug 681192. Part 0.3: Add FrameLayerBuilder::GetThebesLayerResolutionForFrame. r=mattwoodrow
--HG--
extra : rebase_source : eea4dee6d081de5c288e295f3549fc88b10e6c39
2012-05-10 17:24:18 +12:00
Nicholas Cameron
7d91b411ee Bug 716439; creating mask layers. r=roc 2012-02-08 11:27:44 +13:00
Robert O'Callahan
e1a9548573 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
d97a81aaec 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
833e8a244f 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
Matt Woodrow
6ec8203d33 Bug 700240 - Print display lists to a file. r=roc,bjacob 2012-03-01 21:26:09 +13:00
Robert O'Callahan
853836ab04 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
Matt Woodrow
a289897b49 Bug 700240 - Make display list debugging independent of DEBUG. r=khuey,roc 2011-11-17 16:44:16 +13:00
Bas Schouten
4af6622af4 Bug 334411: Introduce flashing invalidates areas when paint flashing is enabled. r=roc 2011-11-15 04:59:03 +00:00
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