Commit Graph

145 Commits

Author SHA1 Message Date
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
Zack Weinberg
647b7a0bfe 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
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
Zack Weinberg
f5a0843ac7 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
5ef6bf26cf 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
f31a56057f Bug 649583 Panning regression on google reader in 2011-04-12 nightly r=roc 2011-04-13 14:12:22 -07:00
Oleg Romashin
631800dfd2 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
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
Robert O'Callahan
d13eeaf01c Bug 641770. Apply correct clip rect to a layerized image. r=tnikkel 2011-04-01 10:33:46 +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
Chris Jones
c1f6326631 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
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
f1081fb688 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
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
Matt Woodrow
f5f4d25848 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
52c00afd16 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
a30256c652 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
88832278c6 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
e2ce233deb 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
d886269e1d 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
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
Robert O'Callahan
face759151 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
8ad0efd198 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
a946b15fb3 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
21068b15a9 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
56250d8567 Bug 595277 - Part -1: Keep the reference to our LayerManager inside LayerManagerData. r=roc 2010-12-08 03:24:05 +01:00
Oleg Romashin
3874b00931 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
43b18d2b18 Backed out changeset a5ec817740f0. a=orange 2010-11-29 09:08:24 -08:00
Oleg Romashin
233ef8a80c 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
1244f0ae62 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
a8abb4a458 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
28d67e6217 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
c1ad5cb316 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
47554e7736 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
96b0a79389 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
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
Robert O'Callahan
bd90f73745 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
0356f8659e 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
ad566be621 Bug 579276. Part 4: Move nsDisplayItem parameter down to ThebesLayerData::Accumulate. r=tnikkel 2010-09-02 21:18:39 +12: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
a150e0aa96 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
d01e645ef5 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
e31e06e790 Backing out bug 579276. a=me 2010-09-02 23:14:25 +12:00
Robert O'Callahan
9bfc8a863e 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
09145533e8 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
32869ab46f Bug 579276. Part 4: Move nsDisplayItem parameter down to ThebesLayerData::Accumulate. r=tnikkel 2010-09-02 21:18:39 +12:00
Robert O'Callahan
a2c4dd3d43 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
14f3d9ad78 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
a1ef3f23dc 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
305ec4bd70 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
f6aa05c375 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
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
Timothy Nikkel
470b36c651 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
76194eb9aa 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
e9dcad73c7 Bug 579663. Part 7. Assert AppUnitsPerDevPixel is constant in container layers. r=roc 2010-08-08 13:49:07 -05:00
Timothy Nikkel
714913a4d8 Bug 579663. Part 3. Use the right AppUnitsPerDevPixel for zoom items. r=roc 2010-08-08 13:49:06 -05:00
Timothy Nikkel
bbc6dff559 Bug 579663. Part 1. Remove unused offset param from GetActiveScrolledRootFor. r=roc 2010-08-08 13:49:06 -05:00
Chris Jones
3b7ff8f6bc 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
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
Matt Woodrow
a580694478 Bug 505115. Use layers to render active 2D transforms. r=roc,dbaron 2010-08-02 15:07:04 +12:00
Robert O'Callahan
01e41cf67d 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
8f3c78f577 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
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
Timothy Nikkel
8d58defa7a 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
e9cc1ca0ad 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
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
e98a518e3c 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
cc0c10fa76 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
efa400c1bc 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
c5362bf642 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
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
8fef922c84 Bug 564991. Part 17: Reimplement ColorLayers. r=mats 2010-07-16 09:08:03 +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
fd35fd2894 Bug 564993. Fix build error, and fix Bas' review comment. 2010-05-24 14:25:58 +12:00
Robert O'Callahan
b045d986ea 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
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