mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-05-13 08:57:27 +00:00
Bug 1388162 - Add a Destroy function to nsDisplayItem to use instead of manually invoking the destructor, this will allow us to recycle them in the future. r=mstange
This commit is contained in:
parent
a3a130b6ff
commit
95f2e31f88
@ -3947,8 +3947,7 @@ nsDOMWindowUtils::GetOMTAStyle(nsIDOMElement* aElement,
|
||||
if (frame && nsLayoutUtils::AreAsyncAnimationsEnabled()) {
|
||||
if (aProperty.EqualsLiteral("opacity")) {
|
||||
Layer* layer =
|
||||
FrameLayerBuilder::GetDedicatedLayer(frame,
|
||||
nsDisplayItem::TYPE_OPACITY);
|
||||
FrameLayerBuilder::GetDedicatedLayer(frame, DisplayItemType::TYPE_OPACITY);
|
||||
if (layer) {
|
||||
float value = 0;
|
||||
bool hadAnimatedOpacity = false;
|
||||
@ -3972,8 +3971,7 @@ nsDOMWindowUtils::GetOMTAStyle(nsIDOMElement* aElement,
|
||||
}
|
||||
} else if (aProperty.EqualsLiteral("transform")) {
|
||||
Layer* layer =
|
||||
FrameLayerBuilder::GetDedicatedLayer(frame,
|
||||
nsDisplayItem::TYPE_TRANSFORM);
|
||||
FrameLayerBuilder::GetDedicatedLayer(frame, DisplayItemType::TYPE_TRANSFORM);
|
||||
if (layer) {
|
||||
MaybeTransform transform;
|
||||
ShadowLayerForwarder* forwarder = layer->Manager()->AsShadowForwarder();
|
||||
|
@ -1069,7 +1069,7 @@ HTMLCanvasElement::InvalidateCanvasContent(const gfx::Rect* damageRect)
|
||||
nsIFrame::WebRenderUserDataTable* userDataTable =
|
||||
frame->GetProperty(nsIFrame::WebRenderUserDataProperty());
|
||||
RefPtr<WebRenderUserData> data;
|
||||
userDataTable->Get(nsDisplayItem::TYPE_CANVAS, getter_AddRefs(data));
|
||||
userDataTable->Get(static_cast<uint32_t>(DisplayItemType::TYPE_CANVAS), getter_AddRefs(data));
|
||||
if (data && data->AsCanvasData()) {
|
||||
renderer = data->AsCanvasData()->GetCanvasRenderer();
|
||||
}
|
||||
@ -1084,10 +1084,10 @@ HTMLCanvasElement::InvalidateCanvasContent(const gfx::Rect* damageRect)
|
||||
nsIntSize size = GetWidthHeight();
|
||||
if (size.width != 0 && size.height != 0) {
|
||||
gfx::IntRect invalRect = gfx::IntRect::Truncate(*damageRect);
|
||||
layer = frame->InvalidateLayer(nsDisplayItem::TYPE_CANVAS, &invalRect);
|
||||
layer = frame->InvalidateLayer(DisplayItemType::TYPE_CANVAS, &invalRect);
|
||||
}
|
||||
} else {
|
||||
layer = frame->InvalidateLayer(nsDisplayItem::TYPE_CANVAS);
|
||||
layer = frame->InvalidateLayer(DisplayItemType::TYPE_CANVAS);
|
||||
}
|
||||
|
||||
if (layer) {
|
||||
|
@ -384,7 +384,7 @@ void VideoFrameContainer::InvalidateWithFlags(uint32_t aFlags)
|
||||
if (invalidateFrame) {
|
||||
frame->InvalidateFrame();
|
||||
} else {
|
||||
frame->InvalidateLayer(nsDisplayItem::TYPE_VIDEO, nullptr, nullptr,
|
||||
frame->InvalidateLayer(DisplayItemType::TYPE_VIDEO, nullptr, nullptr,
|
||||
asyncInvalidate ? nsIFrame::UPDATE_IS_ASYNC : 0);
|
||||
}
|
||||
}
|
||||
|
@ -558,7 +558,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::InvalidateRect(NPRect *invalidRect)
|
||||
double scaleFactor = 1.0;
|
||||
GetContentsScaleFactor(&scaleFactor);
|
||||
rect.ScaleRoundOut(scaleFactor);
|
||||
mPluginFrame->InvalidateLayer(nsDisplayItem::TYPE_PLUGIN, &rect);
|
||||
mPluginFrame->InvalidateLayer(DisplayItemType::TYPE_PLUGIN, &rect);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -571,7 +571,7 @@ NS_IMETHODIMP
|
||||
nsPluginInstanceOwner::RedrawPlugin()
|
||||
{
|
||||
if (mPluginFrame) {
|
||||
mPluginFrame->InvalidateLayer(nsDisplayItem::TYPE_PLUGIN);
|
||||
mPluginFrame->InvalidateLayer(DisplayItemType::TYPE_PLUGIN);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -201,15 +201,15 @@ WebRenderLayerManager::CreateWebRenderCommandsFromDisplayList(nsDisplayList* aDi
|
||||
nsDisplayList savedItems;
|
||||
nsDisplayItem* item;
|
||||
while ((item = aDisplayList->RemoveBottom()) != nullptr) {
|
||||
nsDisplayItem::Type itemType = item->GetType();
|
||||
DisplayItemType itemType = item->GetType();
|
||||
|
||||
// If the item is a event regions item, but is empty (has no regions in it)
|
||||
// then we should just throw it out
|
||||
if (itemType == nsDisplayItem::TYPE_LAYER_EVENT_REGIONS) {
|
||||
if (itemType == DisplayItemType::TYPE_LAYER_EVENT_REGIONS) {
|
||||
nsDisplayLayerEventRegions* eventRegions =
|
||||
static_cast<nsDisplayLayerEventRegions*>(item);
|
||||
if (eventRegions->IsEmpty()) {
|
||||
item->~nsDisplayItem();
|
||||
item->Destroy(aDisplayListBuilder);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -220,7 +220,7 @@ WebRenderLayerManager::CreateWebRenderCommandsFromDisplayList(nsDisplayList* aDi
|
||||
while ((aboveItem = aDisplayList->GetBottom()) != nullptr) {
|
||||
if (aboveItem->TryMerge(item)) {
|
||||
aDisplayList->RemoveBottom();
|
||||
item->~nsDisplayItem();
|
||||
item->Destroy(aDisplayListBuilder);
|
||||
item = aboveItem;
|
||||
itemType = item->GetType();
|
||||
} else {
|
||||
@ -232,7 +232,7 @@ WebRenderLayerManager::CreateWebRenderCommandsFromDisplayList(nsDisplayList* aDi
|
||||
= item->GetSameCoordinateSystemChildren();
|
||||
if (item->ShouldFlattenAway(aDisplayListBuilder)) {
|
||||
aDisplayList->AppendToBottom(itemSameCoordinateSystemChildren);
|
||||
item->~nsDisplayItem();
|
||||
item->Destroy(aDisplayListBuilder);
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -384,7 +384,7 @@ PaintItemByDrawTarget(nsDisplayItem* aItem,
|
||||
RefPtr<gfxContext> context = gfxContext::CreateOrNull(aDT, aOffset.ToUnknownPoint());
|
||||
MOZ_ASSERT(context);
|
||||
|
||||
if (aItem->GetType() == nsDisplayItem::TYPE_MASK) {
|
||||
if (aItem->GetType() == DisplayItemType::TYPE_MASK) {
|
||||
context->SetMatrix(gfxMatrix::Translation(-aOffset.x, -aOffset.y));
|
||||
static_cast<nsDisplayMask*>(aItem)->PaintMask(aDisplayListBuilder, context);
|
||||
} else {
|
||||
@ -460,7 +460,7 @@ WebRenderLayerManager::GenerateFallbackData(nsDisplayItem* aItem,
|
||||
}
|
||||
}
|
||||
|
||||
gfx::SurfaceFormat format = aItem->GetType() == nsDisplayItem::TYPE_MASK ?
|
||||
gfx::SurfaceFormat format = aItem->GetType() == DisplayItemType::TYPE_MASK ?
|
||||
gfx::SurfaceFormat::A8 : gfx::SurfaceFormat::B8G8R8A8;
|
||||
if (!geometry || !invalidRegion.IsEmpty() || fallbackData->IsInvalid()) {
|
||||
if (gfxPrefs::WebRenderBlobImages()) {
|
||||
|
@ -255,7 +255,7 @@ struct RangePaintInfo {
|
||||
|
||||
~RangePaintInfo()
|
||||
{
|
||||
mList.DeleteAll();
|
||||
mList.DeleteAll(&mBuilder);
|
||||
MOZ_COUNT_DTOR(RangePaintInfo);
|
||||
}
|
||||
};
|
||||
@ -4864,7 +4864,7 @@ PresShell::ClipListToRange(nsDisplayListBuilder *aBuilder,
|
||||
}
|
||||
else {
|
||||
// otherwise, just delete the item and don't readd it to the list
|
||||
i->~nsDisplayItem();
|
||||
i->Destroy(aBuilder);
|
||||
}
|
||||
}
|
||||
|
||||
@ -5240,14 +5240,14 @@ AddCanvasBackgroundColor(const nsDisplayList& aList, nsIFrame* aCanvasFrame,
|
||||
{
|
||||
for (nsDisplayItem* i = aList.GetBottom(); i; i = i->GetAbove()) {
|
||||
if (i->Frame() == aCanvasFrame &&
|
||||
i->GetType() == nsDisplayItem::TYPE_CANVAS_BACKGROUND_COLOR) {
|
||||
i->GetType() == DisplayItemType::TYPE_CANVAS_BACKGROUND_COLOR) {
|
||||
nsDisplayCanvasBackgroundColor* bg = static_cast<nsDisplayCanvasBackgroundColor*>(i);
|
||||
bg->SetExtraBackgroundColor(aColor);
|
||||
return true;
|
||||
}
|
||||
nsDisplayList* sublist = i->GetSameCoordinateSystemChildren();
|
||||
if (sublist &&
|
||||
!(i->GetType() == nsDisplayItem::TYPE_BLEND_CONTAINER && !aCSSBackgroundColor) &&
|
||||
!(i->GetType() == DisplayItemType::TYPE_BLEND_CONTAINER && !aCSSBackgroundColor) &&
|
||||
AddCanvasBackgroundColor(*sublist, aCanvasFrame, aColor, aCSSBackgroundColor))
|
||||
return true;
|
||||
}
|
||||
@ -6131,7 +6131,7 @@ PresShell::DoUpdateApproximateFrameVisibility(bool aRemoveOnly)
|
||||
|
||||
ClearApproximateFrameVisibilityVisited(rootFrame->GetView(), true);
|
||||
|
||||
list.DeleteAll();
|
||||
list.DeleteAll(&builder);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1774,7 +1774,7 @@ RestyleManager::AddLayerChangesForAnimation(nsIFrame* aFrame,
|
||||
// so we can skip adding any change hint here. (If we *were* to add
|
||||
// nsChangeHint_UpdateTransformLayer, ApplyRenderingChangeToTree would
|
||||
// complain that we're updating a transform layer without a transform).
|
||||
if (layerInfo.mLayerType == nsDisplayItem::TYPE_TRANSFORM &&
|
||||
if (layerInfo.mLayerType == DisplayItemType::TYPE_TRANSFORM &&
|
||||
!aFrame->StyleDisplay()->HasTransformStyle()) {
|
||||
continue;
|
||||
}
|
||||
|
@ -200,13 +200,13 @@ PrintDisplayItemTo(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem,
|
||||
}
|
||||
}
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
if (aItem->GetType() == nsDisplayItem::TYPE_MASK) {
|
||||
if (aItem->GetType() == DisplayItemType::TYPE_MASK) {
|
||||
nsCString str;
|
||||
(static_cast<nsDisplayMask*>(aItem))->PrintEffects(str);
|
||||
aStream << str.get();
|
||||
}
|
||||
|
||||
if (aItem->GetType() == nsDisplayItem::TYPE_FILTER) {
|
||||
if (aItem->GetType() == DisplayItemType::TYPE_FILTER) {
|
||||
nsCString str;
|
||||
(static_cast<nsDisplayFilter*>(aItem))->PrintEffects(str);
|
||||
aStream << str.get();
|
||||
|
@ -3274,7 +3274,7 @@ nsLayoutUtils::GetFramesForArea(nsIFrame* aFrame, const nsRect& aRect,
|
||||
nsDisplayItem::HitTestState hitTestState;
|
||||
builder.SetHitTestShouldStopAtFirstOpaque(aFlags & ONLY_VISIBLE);
|
||||
list.HitTest(&builder, aRect, &hitTestState, &aOutFrames);
|
||||
list.DeleteAll();
|
||||
list.DeleteAll(&builder);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -3852,7 +3852,7 @@ nsLayoutUtils::PaintFrame(gfxContext* aRenderingContext, nsIFrame* aFrame,
|
||||
|
||||
|
||||
// Flush the list so we don't trigger the IsEmpty-on-destruction assertion
|
||||
list.DeleteAll();
|
||||
list.DeleteAll(&builder);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -1353,7 +1353,7 @@ nsComboboxDisplayFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
|
||||
// remove background items if parent frame is themed
|
||||
if (mComboBox->IsThemed()) {
|
||||
set.BorderBackground()->DeleteAll();
|
||||
set.BorderBackground()->DeleteAll(aBuilder);
|
||||
}
|
||||
|
||||
set.MoveTo(aLists);
|
||||
|
@ -129,7 +129,7 @@ nsGfxCheckboxControlFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
IsIndeterminate()
|
||||
? PaintIndeterminateMark : PaintCheckMark,
|
||||
"CheckedCheckbox",
|
||||
nsDisplayItem::TYPE_CHECKED_CHECKBOX));
|
||||
DisplayItemType::TYPE_CHECKED_CHECKBOX));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -90,7 +90,7 @@ nsGfxRadioControlFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
aLists.Content()->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayGeneric(aBuilder, this, PaintCheckedRadioButton,
|
||||
"CheckedRadioButton",
|
||||
nsDisplayItem::TYPE_CHECKED_RADIOBUTTON));
|
||||
DisplayItemType::TYPE_CHECKED_RADIOBUTTON));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -202,7 +202,7 @@ public:
|
||||
gfxContext* aCtx) override;
|
||||
|
||||
virtual uint32_t GetPerFrameKey() override {
|
||||
return (mIndex << nsDisplayItem::TYPE_BITS) | nsDisplayItem::GetPerFrameKey();
|
||||
return (mIndex << TYPE_BITS) | nsDisplayItem::GetPerFrameKey();
|
||||
}
|
||||
void PaintTextToContext(gfxContext* aCtx,
|
||||
nsPoint aOffsetFromRect);
|
||||
@ -718,7 +718,7 @@ TextOverflow::PruneDisplayListContents(nsDisplayList* aList,
|
||||
while ((item = aList->RemoveBottom())) {
|
||||
nsIFrame* itemFrame = item->Frame();
|
||||
if (IsFrameDescendantOfAny(itemFrame, aFramesToHide, mBlock)) {
|
||||
item->~nsDisplayItem();
|
||||
item->Destroy(mBuilder);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ public:
|
||||
virtual void Paint(nsDisplayListBuilder* aBuilder,
|
||||
gfxContext* aCtx) override;
|
||||
|
||||
NS_DISPLAY_DECL_NAME("ColumnRule", nsDisplayItem::TYPE_COLUMN_RULE);
|
||||
NS_DISPLAY_DECL_NAME("ColumnRule", TYPE_COLUMN_RULE);
|
||||
|
||||
private:
|
||||
nsTArray<nsCSSBorderRenderer> mBorderRenderers;
|
||||
|
@ -2248,14 +2248,14 @@ DisplayDebugBorders(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
|
||||
if (nsFrame::GetShowFrameBorders() && !aFrame->GetRect().IsEmpty()) {
|
||||
aLists.Outlines()->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayGeneric(aBuilder, aFrame, PaintDebugBorder, "DebugBorder",
|
||||
nsDisplayItem::TYPE_DEBUG_BORDER));
|
||||
DisplayItemType::TYPE_DEBUG_BORDER));
|
||||
}
|
||||
// Draw a border around the current event target
|
||||
if (nsFrame::GetShowEventTargetFrameBorder() &&
|
||||
aFrame->PresContext()->PresShell()->GetDrawEventTargetFrame() == aFrame) {
|
||||
aLists.Outlines()->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayGeneric(aBuilder, aFrame, PaintEventTargetBorder, "EventTargetBorder",
|
||||
nsDisplayItem::TYPE_EVENT_TARGET_BORDER));
|
||||
DisplayItemType::TYPE_EVENT_TARGET_BORDER));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2336,9 +2336,9 @@ static bool
|
||||
ItemParticipatesIn3DContext(nsIFrame* aAncestor, nsDisplayItem* aItem)
|
||||
{
|
||||
nsIFrame* transformFrame;
|
||||
if (aItem->GetType() == nsDisplayItem::TYPE_TRANSFORM) {
|
||||
if (aItem->GetType() == DisplayItemType::TYPE_TRANSFORM) {
|
||||
transformFrame = aItem->Frame();
|
||||
} else if (aItem->GetType() == nsDisplayItem::TYPE_PERSPECTIVE) {
|
||||
} else if (aItem->GetType() == DisplayItemType::TYPE_PERSPECTIVE) {
|
||||
transformFrame = static_cast<nsDisplayPerspective*>(aItem)->TransformFrame();
|
||||
} else {
|
||||
return false;
|
||||
@ -2603,11 +2603,11 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
if (aBuilder->IsBackgroundOnly()) {
|
||||
set.BlockBorderBackgrounds()->DeleteAll();
|
||||
set.Floats()->DeleteAll();
|
||||
set.Content()->DeleteAll();
|
||||
set.PositionedDescendants()->DeleteAll();
|
||||
set.Outlines()->DeleteAll();
|
||||
set.BlockBorderBackgrounds()->DeleteAll(aBuilder);
|
||||
set.Floats()->DeleteAll(aBuilder);
|
||||
set.Content()->DeleteAll(aBuilder);
|
||||
set.PositionedDescendants()->DeleteAll(aBuilder);
|
||||
set.Outlines()->DeleteAll(aBuilder);
|
||||
}
|
||||
|
||||
// Sort PositionedDescendants() in CSS 'z-order' order. The list is already
|
||||
@ -2885,7 +2885,7 @@ WrapInWrapList(nsDisplayListBuilder* aBuilder,
|
||||
// makes the perspective frame create one (so we have an atomic entry for z-index
|
||||
// sorting).
|
||||
nsIFrame *itemFrame = item->Frame();
|
||||
if (item->GetType() == nsDisplayItem::TYPE_PERSPECTIVE) {
|
||||
if (item->GetType() == DisplayItemType::TYPE_PERSPECTIVE) {
|
||||
itemFrame = static_cast<nsDisplayPerspective*>(item)->TransformFrame();
|
||||
}
|
||||
|
||||
@ -6606,7 +6606,7 @@ bool
|
||||
nsIFrame::TryUpdateTransformOnly(Layer** aLayerResult)
|
||||
{
|
||||
Layer* layer = FrameLayerBuilder::GetDedicatedLayer(
|
||||
this, nsDisplayItem::TYPE_TRANSFORM);
|
||||
this, DisplayItemType::TYPE_TRANSFORM);
|
||||
if (!layer || !layer->HasUserData(LayerIsPrerenderedDataKey())) {
|
||||
// If this layer isn't prerendered or we clip composites to our OS
|
||||
// window, then we can't correctly optimize to an empty
|
||||
@ -6677,12 +6677,12 @@ nsIFrame::SchedulePaint(PaintType aType)
|
||||
}
|
||||
|
||||
Layer*
|
||||
nsIFrame::InvalidateLayer(uint32_t aDisplayItemKey,
|
||||
nsIFrame::InvalidateLayer(DisplayItemType aDisplayItemKey,
|
||||
const nsIntRect* aDamageRect,
|
||||
const nsRect* aFrameDamageRect,
|
||||
uint32_t aFlags /* = 0 */)
|
||||
{
|
||||
NS_ASSERTION(aDisplayItemKey > 0, "Need a key");
|
||||
NS_ASSERTION(aDisplayItemKey > DisplayItemType::TYPE_ZERO, "Need a key");
|
||||
|
||||
Layer* layer = FrameLayerBuilder::GetDedicatedLayer(this, aDisplayItemKey);
|
||||
|
||||
@ -6707,16 +6707,16 @@ nsIFrame::InvalidateLayer(uint32_t aDisplayItemKey,
|
||||
// screen because sometimes we don't have any retainned data
|
||||
// for remote type displayitem and thus Repaint event is not
|
||||
// triggered. So, always invalidate here as well.
|
||||
uint32_t displayItemKey = aDisplayItemKey;
|
||||
if (aDisplayItemKey == nsDisplayItem::TYPE_PLUGIN ||
|
||||
aDisplayItemKey == nsDisplayItem::TYPE_REMOTE) {
|
||||
displayItemKey = 0;
|
||||
DisplayItemType displayItemKey = aDisplayItemKey;
|
||||
if (aDisplayItemKey == DisplayItemType::TYPE_PLUGIN ||
|
||||
aDisplayItemKey == DisplayItemType::TYPE_REMOTE) {
|
||||
displayItemKey = DisplayItemType::TYPE_ZERO;
|
||||
}
|
||||
|
||||
if (aFrameDamageRect) {
|
||||
InvalidateFrameWithRect(*aFrameDamageRect, displayItemKey);
|
||||
InvalidateFrameWithRect(*aFrameDamageRect, static_cast<uint32_t>(displayItemKey));
|
||||
} else {
|
||||
InvalidateFrame(displayItemKey);
|
||||
InvalidateFrame(static_cast<uint32_t>(displayItemKey));
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
|
@ -2970,7 +2970,7 @@ MaxZIndexInListOfItemsContainedInFrame(nsDisplayList* aList, nsIFrame* aFrame)
|
||||
nsIFrame* itemFrame = item->Frame();
|
||||
// Perspective items return the scroll frame as their Frame(), so consider
|
||||
// their TransformFrame() instead.
|
||||
if (item->GetType() == nsDisplayItem::TYPE_PERSPECTIVE) {
|
||||
if (item->GetType() == DisplayItemType::TYPE_PERSPECTIVE) {
|
||||
itemFrame = static_cast<nsDisplayPerspective*>(item)->TransformFrame();
|
||||
}
|
||||
if (nsLayoutUtils::IsProperAncestorFrame(aFrame, itemFrame)) {
|
||||
@ -3227,7 +3227,7 @@ ClipItemsExceptCaret(nsDisplayList* aList,
|
||||
continue;
|
||||
}
|
||||
|
||||
if (i->GetType() != nsDisplayItem::TYPE_CARET) {
|
||||
if (i->GetType() != DisplayItemType::TYPE_CARET) {
|
||||
const DisplayItemClipChain* clip = i->GetClipChain();
|
||||
const DisplayItemClipChain* intersection = nullptr;
|
||||
if (aCache.Get(clip, &intersection)) {
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include "nsChangeHint.h"
|
||||
#include "nsStyleContextInlines.h"
|
||||
#include "mozilla/gfx/MatrixFwd.h"
|
||||
#include "nsDisplayItemTypes.h"
|
||||
|
||||
#ifdef ACCESSIBILITY
|
||||
#include "mozilla/a11y/AccTypes.h"
|
||||
@ -3030,7 +3031,7 @@ public:
|
||||
enum {
|
||||
UPDATE_IS_ASYNC = 1 << 0
|
||||
};
|
||||
Layer* InvalidateLayer(uint32_t aDisplayItemKey,
|
||||
Layer* InvalidateLayer(DisplayItemType aDisplayItemKey,
|
||||
const nsIntRect* aDamageRect = nullptr,
|
||||
const nsRect* aFrameDamageRect = nullptr,
|
||||
uint32_t aFlags = 0);
|
||||
|
@ -646,7 +646,7 @@ nsImageFrame::InvalidateSelf(const nsIntRect* aLayerInvalidRect,
|
||||
nsIFrame::WebRenderUserDataTable* userDataTable =
|
||||
GetProperty(nsIFrame::WebRenderUserDataProperty());
|
||||
RefPtr<WebRenderUserData> data;
|
||||
userDataTable->Get(nsDisplayItem::TYPE_IMAGE, getter_AddRefs(data));
|
||||
userDataTable->Get(static_cast<uint32_t>(DisplayItemType::TYPE_IMAGE), getter_AddRefs(data));
|
||||
if (data && data->AsFallbackData()) {
|
||||
data->AsFallbackData()->SetInvalid(true);
|
||||
}
|
||||
@ -654,12 +654,12 @@ nsImageFrame::InvalidateSelf(const nsIntRect* aLayerInvalidRect,
|
||||
return;
|
||||
}
|
||||
|
||||
InvalidateLayer(nsDisplayItem::TYPE_IMAGE,
|
||||
InvalidateLayer(DisplayItemType::TYPE_IMAGE,
|
||||
aLayerInvalidRect,
|
||||
aFrameInvalidRect);
|
||||
|
||||
if (!mFirstFrameComplete) {
|
||||
InvalidateLayer(nsDisplayItem::TYPE_ALT_FEEDBACK,
|
||||
InvalidateLayer(DisplayItemType::TYPE_ALT_FEEDBACK,
|
||||
aLayerInvalidRect,
|
||||
aFrameInvalidRect);
|
||||
}
|
||||
@ -1862,7 +1862,7 @@ nsImageFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
if (GetShowFrameBorders() && GetImageMap()) {
|
||||
aLists.Outlines()->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayGeneric(aBuilder, this, PaintDebugImageMap, "DebugImageMap",
|
||||
nsDisplayItem::TYPE_DEBUG_IMAGE_MAP));
|
||||
DisplayItemType::TYPE_DEBUG_IMAGE_MAP));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -421,7 +421,7 @@ PruneDisplayListForExtraPage(nsDisplayListBuilder* aBuilder,
|
||||
if (!nsLayoutUtils::IsProperAncestorFrameCrossDoc(aPage, f)) {
|
||||
// We're throwing this away so call its destructor now. The memory
|
||||
// is owned by aBuilder which destroys all items at once.
|
||||
i->~nsDisplayItem();
|
||||
i->Destroy(aBuilder);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -496,7 +496,7 @@ public:
|
||||
static_cast<nsPageFrame*>(mFrame)->
|
||||
PaintHeaderFooter(*aCtx, ToReferenceFrame(), mDisableSubpixelAA);
|
||||
}
|
||||
NS_DISPLAY_DECL_NAME("HeaderFooter", nsDisplayItem::TYPE_HEADER_FOOTER)
|
||||
NS_DISPLAY_DECL_NAME("HeaderFooter", TYPE_HEADER_FOOTER)
|
||||
|
||||
virtual nsRect GetComponentAlphaBounds(nsDisplayListBuilder* aBuilder) override {
|
||||
bool snap;
|
||||
|
@ -262,7 +262,7 @@ nsPlaceholderFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
aLists.Outlines()->AppendNewToTop(
|
||||
new (aBuilder) nsDisplayGeneric(aBuilder, this, PaintDebugPlaceholder,
|
||||
"DebugPlaceholder",
|
||||
nsDisplayItem::TYPE_DEBUG_PLACEHOLDER));
|
||||
DisplayItemType::TYPE_DEBUG_PLACEHOLDER));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -1173,7 +1173,7 @@ nsPluginFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
if (type == nsPresContext::eContext_Print) {
|
||||
aLists.Content()->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayGeneric(aBuilder, this, PaintPrintPlugin, "PrintPlugin",
|
||||
nsDisplayItem::TYPE_PRINT_PLUGIN));
|
||||
DisplayItemType::TYPE_PRINT_PLUGIN));
|
||||
} else {
|
||||
LayerState state = GetLayerState(aBuilder, nullptr);
|
||||
if (state == LAYER_INACTIVE &&
|
||||
@ -1394,7 +1394,7 @@ nsPluginFrame::BuildLayer(nsDisplayListBuilder* aBuilder,
|
||||
RefPtr<Layer> layer =
|
||||
(aManager->GetLayerBuilder()->GetLeafLayerFor(aBuilder, aItem));
|
||||
|
||||
if (aItem->GetType() == nsDisplayItem::TYPE_PLUGIN) {
|
||||
if (aItem->GetType() == DisplayItemType::TYPE_PLUGIN) {
|
||||
RefPtr<ImageContainer> container;
|
||||
// Image for Windowed plugins that support window capturing for scroll
|
||||
// operations or async windowless rendering.
|
||||
@ -1447,7 +1447,7 @@ nsPluginFrame::BuildLayer(nsDisplayListBuilder* aBuilder,
|
||||
lm->AddDidCompositeObserver(mDidCompositeObserver.get());
|
||||
}
|
||||
} else {
|
||||
NS_ASSERTION(aItem->GetType() == nsDisplayItem::TYPE_PLUGIN_READBACK,
|
||||
NS_ASSERTION(aItem->GetType() == DisplayItemType::TYPE_PLUGIN_READBACK,
|
||||
"Unknown item type");
|
||||
MOZ_ASSERT(!IsOpaque(), "Opaque plugins don't use backgrounds");
|
||||
|
||||
|
@ -316,7 +316,7 @@ WrapBackgroundColorInOwnLayer(nsDisplayListBuilder* aBuilder,
|
||||
nsDisplayList tempItems;
|
||||
nsDisplayItem* item;
|
||||
while ((item = aList->RemoveBottom()) != nullptr) {
|
||||
if (item->GetType() == nsDisplayItem::TYPE_BACKGROUND_COLOR) {
|
||||
if (item->GetType() == DisplayItemType::TYPE_BACKGROUND_COLOR) {
|
||||
nsDisplayList tmpList;
|
||||
tmpList.AppendToTop(item);
|
||||
item = new (aBuilder) nsDisplayOwnLayer(aBuilder, aFrame, &tmpList, aBuilder->CurrentActiveScrolledRoot());
|
||||
@ -580,7 +580,7 @@ nsSubDocumentFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
if (aBuilder->IsForFrameVisibility()) {
|
||||
// We don't add the childItems to the return list as we're dealing with them here.
|
||||
presShell->RebuildApproximateFrameVisibilityDisplayList(childItems);
|
||||
childItems.DeleteAll();
|
||||
childItems.DeleteAll(aBuilder);
|
||||
} else {
|
||||
aLists.Content()->AppendToTop(&childItems);
|
||||
}
|
||||
|
@ -5030,7 +5030,7 @@ public:
|
||||
}
|
||||
|
||||
bool TryMerge(nsDisplayItem* aItem) override {
|
||||
if (aItem->GetType() != TYPE_TEXT)
|
||||
if (aItem->GetType() != DisplayItemType::TYPE_TEXT)
|
||||
return false;
|
||||
if (aItem->GetClipChain() != GetClipChain())
|
||||
return false;
|
||||
|
@ -278,7 +278,7 @@ RenderFrameParent::TriggerRepaint()
|
||||
return;
|
||||
}
|
||||
|
||||
docFrame->InvalidateLayer(nsDisplayItem::TYPE_REMOTE);
|
||||
docFrame->InvalidateLayer(DisplayItemType::TYPE_REMOTE);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1896,8 +1896,7 @@ public:
|
||||
}
|
||||
|
||||
virtual uint32_t GetPerFrameKey() override {
|
||||
return (mIndex << nsDisplayItem::TYPE_BITS)
|
||||
| nsDisplayItem::GetPerFrameKey();
|
||||
return (mIndex << TYPE_BITS) | nsDisplayItem::GetPerFrameKey();
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -286,13 +286,13 @@ DisplayItemData::~DisplayItemData()
|
||||
void
|
||||
DisplayItemData::ClearAnimationCompositorState()
|
||||
{
|
||||
if (mDisplayItemKey != nsDisplayItem::TYPE_TRANSFORM &&
|
||||
mDisplayItemKey != nsDisplayItem::TYPE_OPACITY) {
|
||||
if (GetDisplayItemTypeFromKey(mDisplayItemKey) != DisplayItemType::TYPE_TRANSFORM &&
|
||||
GetDisplayItemTypeFromKey(mDisplayItemKey) != DisplayItemType::TYPE_OPACITY) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (nsIFrame* frame : mFrameList) {
|
||||
nsCSSPropertyID prop = mDisplayItemKey == nsDisplayItem::TYPE_TRANSFORM ?
|
||||
nsCSSPropertyID prop = GetDisplayItemTypeFromKey(mDisplayItemKey) == DisplayItemType::TYPE_TRANSFORM ?
|
||||
eCSSProperty_transform : eCSSProperty_opacity;
|
||||
EffectCompositor::ClearIsRunningOnCompositor(frame, prop);
|
||||
}
|
||||
@ -357,14 +357,14 @@ public:
|
||||
case LAYER_SVG_EFFECTS:
|
||||
layerState = "LAYER_SVG_EFFECTS"; break;
|
||||
}
|
||||
uint32_t mask = (1 << nsDisplayItem::TYPE_BITS) - 1;
|
||||
uint32_t mask = (1 << TYPE_BITS) - 1;
|
||||
|
||||
nsAutoCString str;
|
||||
str += prefix;
|
||||
str += nsPrintfCString("Frame %p ", data->mFrameList[0]);
|
||||
str += nsDisplayItem::DisplayItemTypeName(static_cast<nsDisplayItem::Type>(data->mDisplayItemKey & mask));
|
||||
if ((data->mDisplayItemKey >> nsDisplayItem::TYPE_BITS)) {
|
||||
str += nsPrintfCString("(%i)", data->mDisplayItemKey >> nsDisplayItem::TYPE_BITS);
|
||||
if ((data->mDisplayItemKey >> TYPE_BITS)) {
|
||||
str += nsPrintfCString("(%i)", data->mDisplayItemKey >> TYPE_BITS);
|
||||
}
|
||||
str += nsPrintfCString(", %s, Layer %p", layerState, data->mLayer.get());
|
||||
if (data->mOptLayer) {
|
||||
@ -2086,7 +2086,7 @@ FrameLayerBuilder::IterateRetainedDataFor(nsIFrame* aFrame, DisplayItemDataCallb
|
||||
|
||||
for (uint32_t i = 0; i < array.Length(); i++) {
|
||||
DisplayItemData* data = DisplayItemData::AssertDisplayItemData(array.ElementAt(i));
|
||||
if (data->mDisplayItemKey != nsDisplayItem::TYPE_ZERO) {
|
||||
if (data->mDisplayItemKey != 0) {
|
||||
aCallback(aFrame, data);
|
||||
}
|
||||
}
|
||||
@ -2500,7 +2500,7 @@ AppUnitsPerDevPixel(nsDisplayItem* aItem)
|
||||
// But zoom display items report their bounds etc using the parent document's
|
||||
// APD because zoom items act as a conversion layer between the two different
|
||||
// APDs.
|
||||
if (aItem->GetType() == nsDisplayItem::TYPE_ZOOM) {
|
||||
if (aItem->GetType() == DisplayItemType::TYPE_ZOOM) {
|
||||
return static_cast<nsDisplayZoom*>(aItem)->GetParentAppUnitsPerDevPixel();
|
||||
}
|
||||
return aItem->Frame()->PresContext()->AppUnitsPerDevPixel();
|
||||
@ -3167,7 +3167,7 @@ void ContainerState::FinishPaintedLayerData(PaintedLayerData& aData, FindOpaqueB
|
||||
}
|
||||
|
||||
for (auto& item : data->mAssignedDisplayItems) {
|
||||
MOZ_ASSERT(item.mItem->GetType() != nsDisplayItem::TYPE_LAYER_EVENT_REGIONS);
|
||||
MOZ_ASSERT(item.mItem->GetType() != DisplayItemType::TYPE_LAYER_EVENT_REGIONS);
|
||||
|
||||
InvalidateForLayerChange(item.mItem, data->mLayer);
|
||||
mLayerBuilder->AddPaintedDisplayItem(data, item.mItem, item.mClip,
|
||||
@ -3711,12 +3711,12 @@ PaintInactiveLayer(nsDisplayListBuilder* aBuilder,
|
||||
basic->BeginTransaction();
|
||||
basic->SetTarget(context);
|
||||
|
||||
if (aItem->GetType() == nsDisplayItem::TYPE_MASK) {
|
||||
if (aItem->GetType() == DisplayItemType::TYPE_MASK) {
|
||||
static_cast<nsDisplayMask*>(aItem)->PaintAsLayer(aBuilder, aCtx, basic);
|
||||
if (basic->InTransaction()) {
|
||||
basic->AbortTransaction();
|
||||
}
|
||||
} else if (aItem->GetType() == nsDisplayItem::TYPE_FILTER){
|
||||
} else if (aItem->GetType() == DisplayItemType::TYPE_FILTER){
|
||||
static_cast<nsDisplayFilter*>(aItem)->PaintAsLayer(aBuilder, aCtx, basic);
|
||||
if (basic->InTransaction()) {
|
||||
basic->AbortTransaction();
|
||||
@ -3954,7 +3954,7 @@ ContainerState::SetupMaskLayerForCSSMask(Layer* aLayer,
|
||||
static bool
|
||||
IsScrollThumbLayer(nsDisplayItem* aItem)
|
||||
{
|
||||
return aItem->GetType() == nsDisplayItem::TYPE_OWN_LAYER &&
|
||||
return aItem->GetType() == DisplayItemType::TYPE_OWN_LAYER &&
|
||||
static_cast<nsDisplayOwnLayer*>(aItem)->IsScrollThumbLayer();
|
||||
}
|
||||
|
||||
@ -3997,15 +3997,15 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
nsDisplayList savedItems;
|
||||
nsDisplayItem* item;
|
||||
while ((item = aList->RemoveBottom()) != nullptr) {
|
||||
nsDisplayItem::Type itemType = item->GetType();
|
||||
DisplayItemType itemType = item->GetType();
|
||||
|
||||
// If the item is a event regions item, but is empty (has no regions in it)
|
||||
// then we should just throw it out
|
||||
if (itemType == nsDisplayItem::TYPE_LAYER_EVENT_REGIONS) {
|
||||
if (itemType == DisplayItemType::TYPE_LAYER_EVENT_REGIONS) {
|
||||
nsDisplayLayerEventRegions* eventRegions =
|
||||
static_cast<nsDisplayLayerEventRegions*>(item);
|
||||
if (eventRegions->IsEmpty()) {
|
||||
item->~nsDisplayItem();
|
||||
item->Destroy(mBuilder);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -4016,7 +4016,7 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
while ((aboveItem = aList->GetBottom()) != nullptr) {
|
||||
if (aboveItem->TryMerge(item)) {
|
||||
aList->RemoveBottom();
|
||||
item->~nsDisplayItem();
|
||||
item->Destroy(mBuilder);
|
||||
item = aboveItem;
|
||||
itemType = item->GetType();
|
||||
} else {
|
||||
@ -4028,7 +4028,7 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
= item->GetSameCoordinateSystemChildren();
|
||||
if (item->ShouldFlattenAway(mBuilder)) {
|
||||
aList->AppendToBottom(itemSameCoordinateSystemChildren);
|
||||
item->~nsDisplayItem();
|
||||
item->Destroy(mBuilder);
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -4042,8 +4042,8 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
}
|
||||
|
||||
if (mParameters.mForEventsAndPluginsOnly && !item->GetChildren() &&
|
||||
(itemType != nsDisplayItem::TYPE_LAYER_EVENT_REGIONS &&
|
||||
itemType != nsDisplayItem::TYPE_PLUGIN)) {
|
||||
(itemType != DisplayItemType::TYPE_LAYER_EVENT_REGIONS &&
|
||||
itemType != DisplayItemType::TYPE_PLUGIN)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -4070,7 +4070,7 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
itemASR = item->GetActiveScrolledRoot();
|
||||
const DisplayItemClipChain* itemClipChain = item->GetClipChain();
|
||||
if (itemClipChain && itemClipChain->mASR == itemASR &&
|
||||
itemType != nsDisplayItem::TYPE_STICKY_POSITION) {
|
||||
itemType != DisplayItemType::TYPE_STICKY_POSITION) {
|
||||
layerClipChain = itemClipChain->mParent;
|
||||
} else {
|
||||
layerClipChain = itemClipChain;
|
||||
@ -4091,13 +4091,13 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
|
||||
bool snap;
|
||||
nsRect itemContent = item->GetBounds(mBuilder, &snap);
|
||||
if (itemType == nsDisplayItem::TYPE_LAYER_EVENT_REGIONS) {
|
||||
if (itemType == DisplayItemType::TYPE_LAYER_EVENT_REGIONS) {
|
||||
nsDisplayLayerEventRegions* eventRegions =
|
||||
static_cast<nsDisplayLayerEventRegions*>(item);
|
||||
itemContent = eventRegions->GetHitRegionBounds(mBuilder, &snap);
|
||||
}
|
||||
nsIntRect itemDrawRect = ScaleToOutsidePixels(itemContent, snap);
|
||||
bool prerenderedTransform = itemType == nsDisplayItem::TYPE_TRANSFORM &&
|
||||
bool prerenderedTransform = itemType == DisplayItemType::TYPE_TRANSFORM &&
|
||||
static_cast<nsDisplayTransform*>(item)->MayBeAnimated(mBuilder);
|
||||
ParentLayerIntRect clipRect;
|
||||
const DisplayItemClip& itemClip = item->GetClip();
|
||||
@ -4112,7 +4112,7 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
#ifdef DEBUG
|
||||
nsRect bounds = itemContent;
|
||||
bool dummy;
|
||||
if (itemType == nsDisplayItem::TYPE_LAYER_EVENT_REGIONS) {
|
||||
if (itemType == DisplayItemType::TYPE_LAYER_EVENT_REGIONS) {
|
||||
bounds = item->GetBounds(mBuilder, &dummy);
|
||||
if (itemClip.HasClip()) {
|
||||
bounds.IntersectRect(bounds, itemClip.GetClipRect());
|
||||
@ -4176,7 +4176,7 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
|
||||
// 3D-transformed layers don't necessarily draw in the order in which
|
||||
// they're added to their parent container layer.
|
||||
bool mayDrawOutOfOrder = itemType == nsDisplayItem::TYPE_TRANSFORM &&
|
||||
bool mayDrawOutOfOrder = itemType == DisplayItemType::TYPE_TRANSFORM &&
|
||||
(item->Frame()->Combines3DTransformWithAncestors() ||
|
||||
item->Frame()->Extend3DContext());
|
||||
|
||||
@ -4201,7 +4201,7 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
|
||||
bool hasScrolledClip = layerClipChain && layerClipChain->mClip.HasClip() &&
|
||||
(!ActiveScrolledRoot::IsAncestor(layerClipChain->mASR, itemASR) ||
|
||||
itemType == nsDisplayItem::TYPE_STICKY_POSITION);
|
||||
itemType == DisplayItemType::TYPE_STICKY_POSITION);
|
||||
|
||||
if (hasScrolledClip) {
|
||||
// If the clip is scrolled, reserve just the area of the clip for
|
||||
@ -4264,11 +4264,11 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
params.mCompositorASR = params.mScrollMetadataASR != mContainerScrollMetadataASR
|
||||
? params.mScrollMetadataASR
|
||||
: mContainerCompositorASR;
|
||||
if (itemType == nsDisplayItem::TYPE_FIXED_POSITION) {
|
||||
if (itemType == DisplayItemType::TYPE_FIXED_POSITION) {
|
||||
params.mCompositorASR = itemASR;
|
||||
}
|
||||
|
||||
if (itemType == nsDisplayItem::TYPE_PERSPECTIVE) {
|
||||
if (itemType == DisplayItemType::TYPE_PERSPECTIVE) {
|
||||
// Perspective items have a single child item, an nsDisplayTransform.
|
||||
// If the perspective item is scrolled, but the perspective-inducing
|
||||
// frame is outside the scroll frame (indicated by item->Frame()
|
||||
@ -4350,18 +4350,18 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
ownLayer->SetScrolledClip(Some(scrolledLayerClip));
|
||||
}
|
||||
|
||||
if (item->GetType() == nsDisplayItem::TYPE_MASK) {
|
||||
if (item->GetType() == DisplayItemType::TYPE_MASK) {
|
||||
MOZ_ASSERT(itemClip.GetRoundedRectCount() == 0);
|
||||
|
||||
nsDisplayMask* maskItem = static_cast<nsDisplayMask*>(item);
|
||||
SetupMaskLayerForCSSMask(ownLayer, maskItem);
|
||||
|
||||
nsDisplayItem* next = aList->GetBottom();
|
||||
if (next && next->GetType() == nsDisplayItem::TYPE_SCROLL_INFO_LAYER) {
|
||||
if (next && next->GetType() == DisplayItemType::TYPE_SCROLL_INFO_LAYER) {
|
||||
// Since we do build a layer for mask, there is no need for this
|
||||
// scroll info layer anymore.
|
||||
aList->RemoveBottom();
|
||||
next->~nsDisplayItem();
|
||||
next->Destroy(mBuilder);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4387,7 +4387,7 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
newLayerEntry->mScrollMetadataASR = scrollMetadataASR;
|
||||
newLayerEntry->mClipChain = layerClipChain;
|
||||
newLayerEntry->mLayerState = layerState;
|
||||
if (itemType == nsDisplayItem::TYPE_FIXED_POSITION) {
|
||||
if (itemType == DisplayItemType::TYPE_FIXED_POSITION) {
|
||||
newLayerEntry->mIsFixedToRootScrollFrame =
|
||||
item->Frame()->StyleDisplay()->mPosition == NS_STYLE_POSITION_FIXED &&
|
||||
nsLayoutUtils::IsReallyFixedPos(item->Frame());
|
||||
@ -4395,7 +4395,7 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
|
||||
// Don't attempt to flatten compnent alpha layers that are within
|
||||
// a forced active layer, or an active transform;
|
||||
if (itemType == nsDisplayItem::TYPE_TRANSFORM ||
|
||||
if (itemType == DisplayItemType::TYPE_TRANSFORM ||
|
||||
layerState == LAYER_ACTIVE_FORCE) {
|
||||
newLayerEntry->mPropagateComponentAlphaFlattening = false;
|
||||
}
|
||||
@ -4409,13 +4409,13 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
// nsDisplayTransform::BuildLayer must set layerContentsVisibleRect.
|
||||
// We rely on this to ensure 3D transforms compute a reasonable
|
||||
// layer visible region.
|
||||
NS_ASSERTION(itemType != nsDisplayItem::TYPE_TRANSFORM ||
|
||||
NS_ASSERTION(itemType != DisplayItemType::TYPE_TRANSFORM ||
|
||||
layerContentsVisibleRect.width >= 0,
|
||||
"Transform items must set layerContentsVisibleRect!");
|
||||
if (mLayerBuilder->IsBuildingRetainedLayers()) {
|
||||
newLayerEntry->mLayerContentsVisibleRect = layerContentsVisibleRect;
|
||||
if (itemType == nsDisplayItem::TYPE_PERSPECTIVE ||
|
||||
(itemType == nsDisplayItem::TYPE_TRANSFORM &&
|
||||
if (itemType == DisplayItemType::TYPE_PERSPECTIVE ||
|
||||
(itemType == DisplayItemType::TYPE_TRANSFORM &&
|
||||
(item->Frame()->Extend3DContext() ||
|
||||
item->Frame()->Combines3DTransformWithAncestors() ||
|
||||
item->Frame()->HasPerspective()))) {
|
||||
@ -4433,7 +4433,7 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
&newLayerEntry->mOpaqueForAnimatedGeometryRootParent);
|
||||
} else {
|
||||
bool useChildrenVisible =
|
||||
itemType == nsDisplayItem::TYPE_TRANSFORM &&
|
||||
itemType == DisplayItemType::TYPE_TRANSFORM &&
|
||||
(item->Frame()->IsPreserve3DLeaf() ||
|
||||
item->Frame()->HasPerspective());
|
||||
const nsIntRegion &visible = useChildrenVisible ?
|
||||
@ -4444,14 +4444,14 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
layerContentsVisibleRect.width >= 0 ? &layerContentsVisibleRect : nullptr,
|
||||
useChildrenVisible);
|
||||
}
|
||||
if (itemType == nsDisplayItem::TYPE_SCROLL_INFO_LAYER) {
|
||||
if (itemType == DisplayItemType::TYPE_SCROLL_INFO_LAYER) {
|
||||
nsDisplayScrollInfoLayer* scrollItem = static_cast<nsDisplayScrollInfoLayer*>(item);
|
||||
newLayerEntry->mOpaqueForAnimatedGeometryRootParent = false;
|
||||
newLayerEntry->mBaseScrollMetadata =
|
||||
scrollItem->ComputeScrollMetadata(ownLayer, mParameters);
|
||||
} else if ((itemType == nsDisplayItem::TYPE_SUBDOCUMENT ||
|
||||
itemType == nsDisplayItem::TYPE_ZOOM ||
|
||||
itemType == nsDisplayItem::TYPE_RESOLUTION) &&
|
||||
} else if ((itemType == DisplayItemType::TYPE_SUBDOCUMENT ||
|
||||
itemType == DisplayItemType::TYPE_ZOOM ||
|
||||
itemType == DisplayItemType::TYPE_RESOLUTION) &&
|
||||
gfxPrefs::LayoutUseContainersForRootFrames())
|
||||
{
|
||||
newLayerEntry->mBaseScrollMetadata =
|
||||
@ -4473,7 +4473,7 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
||||
topLeft);
|
||||
});
|
||||
|
||||
if (itemType == nsDisplayItem::TYPE_LAYER_EVENT_REGIONS) {
|
||||
if (itemType == DisplayItemType::TYPE_LAYER_EVENT_REGIONS) {
|
||||
nsDisplayLayerEventRegions* eventRegions =
|
||||
static_cast<nsDisplayLayerEventRegions*>(item);
|
||||
paintedLayerData->AccumulateEventRegions(this, eventRegions);
|
||||
@ -5473,7 +5473,7 @@ ChooseScaleAndSetTransform(FrameLayerBuilder* aLayerBuilder,
|
||||
// If the container's transform is animated off main thread, fix a suitable scale size
|
||||
// for animation
|
||||
if (aContainerItem &&
|
||||
aContainerItem->GetType() == nsDisplayItem::TYPE_TRANSFORM &&
|
||||
aContainerItem->GetType() == DisplayItemType::TYPE_TRANSFORM &&
|
||||
EffectCompositor::HasAnimationsForCompositor(
|
||||
aContainerFrame, eCSSProperty_transform)) {
|
||||
nsSize displaySize = ComputeDesiredDisplaySizeForAnimation(aContainerFrame);
|
||||
@ -5573,7 +5573,7 @@ FrameLayerBuilder::BuildContainerLayerFor(nsDisplayListBuilder* aBuilder,
|
||||
uint32_t aFlags)
|
||||
{
|
||||
uint32_t containerDisplayItemKey =
|
||||
aContainerItem ? aContainerItem->GetPerFrameKey() : nsDisplayItem::TYPE_ZERO;
|
||||
aContainerItem ? aContainerItem->GetPerFrameKey() : 0;
|
||||
NS_ASSERTION(aContainerFrame, "Container display items here should have a frame");
|
||||
NS_ASSERTION(!aContainerItem ||
|
||||
aContainerItem->Frame() == aContainerFrame,
|
||||
@ -5829,7 +5829,7 @@ FrameLayerBuilder::InvalidateAllLayersForFrame(nsIFrame *aFrame)
|
||||
|
||||
/* static */
|
||||
Layer*
|
||||
FrameLayerBuilder::GetDedicatedLayer(nsIFrame* aFrame, uint32_t aDisplayItemKey)
|
||||
FrameLayerBuilder::GetDedicatedLayer(nsIFrame* aFrame, DisplayItemType aDisplayItemKey)
|
||||
{
|
||||
//TODO: This isn't completely correct, since a frame could exist as a layer
|
||||
// in the normal widget manager, and as a different layer (or no layer)
|
||||
@ -5842,7 +5842,7 @@ FrameLayerBuilder::GetDedicatedLayer(nsIFrame* aFrame, uint32_t aDisplayItemKey)
|
||||
if (!element->mParent->mLayerManager->IsWidgetLayerManager()) {
|
||||
continue;
|
||||
}
|
||||
if (element->mDisplayItemKey == aDisplayItemKey) {
|
||||
if (GetDisplayItemTypeFromKey(element->mDisplayItemKey) == aDisplayItemKey) {
|
||||
if (element->mOptLayer) {
|
||||
return element->mOptLayer;
|
||||
}
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "LayerState.h"
|
||||
#include "Layers.h"
|
||||
#include "LayerUserData.h"
|
||||
#include "nsDisplayItemTypes.h"
|
||||
|
||||
class nsDisplayListBuilder;
|
||||
class nsDisplayList;
|
||||
@ -422,7 +423,7 @@ public:
|
||||
* for the given display item key. If there isn't one, we return null,
|
||||
* otherwise we return the layer.
|
||||
*/
|
||||
static Layer* GetDedicatedLayer(nsIFrame* aFrame, uint32_t aDisplayItemKey);
|
||||
static Layer* GetDedicatedLayer(nsIFrame* aFrame, DisplayItemType aDisplayItemType);
|
||||
|
||||
/**
|
||||
* This callback must be provided to EndTransaction. The callback data
|
||||
|
@ -10,12 +10,12 @@
|
||||
* It's useful to be able to dynamically check the type of certain items.
|
||||
* Every subclass of nsDisplayItem must have a new type added here for the purposes
|
||||
* of easy comparison and matching of items in different display lists.
|
||||
*
|
||||
* This is #included inside nsDisplayItem.
|
||||
*/
|
||||
|
||||
#ifndef NSDISPLAYITEMTYPES_H_
|
||||
#define NSDISPLAYITEMTYPES_H_
|
||||
|
||||
enum Type {
|
||||
enum class DisplayItemType {
|
||||
TYPE_ZERO = 0, /** Spacer so that the first item starts at 1 */
|
||||
|
||||
#define DECLARE_DISPLAY_ITEM_TYPE(name) TYPE_##name,
|
||||
@ -36,11 +36,11 @@ enum DisplayItemFlags {
|
||||
TYPE_RENDERS_NO_IMAGES = 1 << 0
|
||||
};
|
||||
|
||||
static const char* DisplayItemTypeName(Type aType)
|
||||
inline const char* DisplayItemTypeName(DisplayItemType aType)
|
||||
{
|
||||
switch (aType) {
|
||||
#define DECLARE_DISPLAY_ITEM_TYPE(name) case TYPE_##name: return #name;
|
||||
#define DECLARE_DISPLAY_ITEM_TYPE_FLAGS(name,flags) case TYPE_##name: return #name;
|
||||
#define DECLARE_DISPLAY_ITEM_TYPE(name) case DisplayItemType::TYPE_##name: return #name;
|
||||
#define DECLARE_DISPLAY_ITEM_TYPE_FLAGS(name,flags) case DisplayItemType::TYPE_##name: return #name;
|
||||
#include "nsDisplayItemTypesList.h"
|
||||
#undef DECLARE_DISPLAY_ITEM_TYPE
|
||||
#undef DECLARE_DISPLAY_ITEM_TYPE_FLAGS
|
||||
@ -49,9 +49,9 @@ static const char* DisplayItemTypeName(Type aType)
|
||||
}
|
||||
}
|
||||
|
||||
static uint8_t GetDisplayItemFlagsForType(Type aType)
|
||||
inline uint8_t GetDisplayItemFlagsForType(DisplayItemType aType)
|
||||
{
|
||||
static const uint8_t flags[TYPE_MAX] = {
|
||||
static const uint8_t flags[static_cast<uint32_t>(DisplayItemType::TYPE_MAX)] = {
|
||||
0
|
||||
#define DECLARE_DISPLAY_ITEM_TYPE(name) ,0
|
||||
#define DECLARE_DISPLAY_ITEM_TYPE_FLAGS(name,flags) ,flags
|
||||
@ -60,13 +60,15 @@ static uint8_t GetDisplayItemFlagsForType(Type aType)
|
||||
#undef DECLARE_DISPLAY_ITEM_TYPE_FLAGS
|
||||
};
|
||||
|
||||
return flags[aType];
|
||||
return flags[static_cast<uint32_t>(aType)];
|
||||
}
|
||||
|
||||
static Type GetDisplayItemTypeFromKey(uint32_t aDisplayItemKey)
|
||||
inline DisplayItemType GetDisplayItemTypeFromKey(uint32_t aDisplayItemKey)
|
||||
{
|
||||
static const uint32_t typeMask = (1 << TYPE_BITS) - 1;
|
||||
Type type = static_cast<Type>(aDisplayItemKey & typeMask);
|
||||
NS_ASSERTION(type > TYPE_ZERO && type < TYPE_MAX, "Invalid display item type!");
|
||||
DisplayItemType type = static_cast<DisplayItemType>(aDisplayItemKey & typeMask);
|
||||
NS_ASSERTION(type >= DisplayItemType::TYPE_ZERO && type < DisplayItemType::TYPE_MAX, "Invalid display item type!");
|
||||
return type;
|
||||
}
|
||||
|
||||
#endif /*NSDISPLAYITEMTYPES_H_*/
|
||||
|
@ -64,6 +64,7 @@ DECLARE_DISPLAY_ITEM_TYPE_FLAGS(PERSPECTIVE,TYPE_RENDERS_NO_IMAGES)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(VIDEO)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(WRAP_LIST)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(ZOOM)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(GENERIC)
|
||||
|
||||
#if defined(MOZ_REFLOW_PERF_DSP) && defined(MOZ_REFLOW_PERF)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(REFLOW_COUNT)
|
||||
|
@ -127,7 +127,7 @@ SpammyLayoutWarningsEnabled()
|
||||
void*
|
||||
AnimatedGeometryRoot::operator new(size_t aSize, nsDisplayListBuilder* aBuilder)
|
||||
{
|
||||
return aBuilder->Allocate(aSize);
|
||||
return aBuilder->Allocate(aSize, DisplayItemType::TYPE_ZERO);
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
@ -952,7 +952,7 @@ nsDisplayListBuilder::nsDisplayListBuilder(nsIFrame* aReferenceFrame,
|
||||
mFrameToAnimatedGeometryRootMap.Put(aReferenceFrame, &mRootAGR);
|
||||
|
||||
nsCSSRendering::BeginFrameTreesLocked();
|
||||
static_assert(nsDisplayItem::TYPE_MAX < (1 << nsDisplayItem::TYPE_BITS),
|
||||
static_assert(static_cast<uint32_t>(DisplayItemType::TYPE_MAX) < (1 << TYPE_BITS),
|
||||
"Check nsDisplayItem::TYPE_MAX should not overflow");
|
||||
}
|
||||
|
||||
@ -1219,13 +1219,13 @@ DisplayListIsNonBlank(nsDisplayList* aList)
|
||||
{
|
||||
for (nsDisplayItem* i = aList->GetBottom(); i != nullptr; i = i->GetAbove()) {
|
||||
switch (i->GetType()) {
|
||||
case nsDisplayItem::TYPE_LAYER_EVENT_REGIONS:
|
||||
case nsDisplayItem::TYPE_CANVAS_BACKGROUND_COLOR:
|
||||
case nsDisplayItem::TYPE_CANVAS_BACKGROUND_IMAGE:
|
||||
case DisplayItemType::TYPE_LAYER_EVENT_REGIONS:
|
||||
case DisplayItemType::TYPE_CANVAS_BACKGROUND_COLOR:
|
||||
case DisplayItemType::TYPE_CANVAS_BACKGROUND_IMAGE:
|
||||
continue;
|
||||
case nsDisplayItem::TYPE_SOLID_COLOR:
|
||||
case nsDisplayItem::TYPE_BACKGROUND:
|
||||
case nsDisplayItem::TYPE_BACKGROUND_COLOR:
|
||||
case DisplayItemType::TYPE_SOLID_COLOR:
|
||||
case DisplayItemType::TYPE_BACKGROUND:
|
||||
case DisplayItemType::TYPE_BACKGROUND_COLOR:
|
||||
if (i->Frame()->IsCanvasFrame()) {
|
||||
continue;
|
||||
}
|
||||
@ -1344,16 +1344,21 @@ nsDisplayListBuilder::MarkPreserve3DFramesForDisplayList(nsIFrame* aDirtyFrame)
|
||||
}
|
||||
|
||||
void*
|
||||
nsDisplayListBuilder::Allocate(size_t aSize)
|
||||
nsDisplayListBuilder::Allocate(size_t aSize, DisplayItemType aType)
|
||||
{
|
||||
return mPool.Allocate(aSize);
|
||||
}
|
||||
|
||||
void
|
||||
nsDisplayListBuilder::Destroy(DisplayItemType aType, void* aPtr)
|
||||
{
|
||||
}
|
||||
|
||||
ActiveScrolledRoot*
|
||||
nsDisplayListBuilder::AllocateActiveScrolledRoot(const ActiveScrolledRoot* aParent,
|
||||
nsIScrollableFrame* aScrollableFrame)
|
||||
{
|
||||
void* p = Allocate(sizeof(ActiveScrolledRoot));
|
||||
void* p = Allocate(sizeof(ActiveScrolledRoot), DisplayItemType::TYPE_ZERO);
|
||||
ActiveScrolledRoot* asr =
|
||||
new (KnownNotNull, p) ActiveScrolledRoot(aParent, aScrollableFrame);
|
||||
mActiveScrolledRoots.AppendElement(asr);
|
||||
@ -1365,7 +1370,7 @@ nsDisplayListBuilder::AllocateDisplayItemClipChain(const DisplayItemClip& aClip,
|
||||
const ActiveScrolledRoot* aASR,
|
||||
const DisplayItemClipChain* aParent)
|
||||
{
|
||||
void* p = Allocate(sizeof(DisplayItemClipChain));
|
||||
void* p = Allocate(sizeof(DisplayItemClipChain), DisplayItemType::TYPE_ZERO);
|
||||
DisplayItemClipChain* c = new (KnownNotNull, p) DisplayItemClipChain{ aClip, aASR, aParent };
|
||||
mClipChainsToDestroy.AppendElement(c);
|
||||
return c;
|
||||
@ -1946,7 +1951,7 @@ TreatAsOpaque(nsDisplayItem* aItem, nsDisplayListBuilder* aBuilder)
|
||||
bool snap;
|
||||
nsRegion opaque = aItem->GetOpaqueRegion(aBuilder, &snap);
|
||||
if (aBuilder->IsForPluginGeometry() &&
|
||||
aItem->GetType() != nsDisplayItem::TYPE_LAYER_EVENT_REGIONS)
|
||||
aItem->GetType() != DisplayItemType::TYPE_LAYER_EVENT_REGIONS)
|
||||
{
|
||||
// Treat all leaf chrome items as opaque, unless their frames are opacity:0.
|
||||
// Since opacity:0 frames generate an nsDisplayOpacity, that item will
|
||||
@ -2390,10 +2395,10 @@ nsDisplayItem* nsDisplayList::RemoveBottom() {
|
||||
return item;
|
||||
}
|
||||
|
||||
void nsDisplayList::DeleteAll() {
|
||||
void nsDisplayList::DeleteAll(nsDisplayListBuilder* aBuilder) {
|
||||
nsDisplayItem* item;
|
||||
while ((item = RemoveBottom()) != nullptr) {
|
||||
item->~nsDisplayItem();
|
||||
item->Destroy(aBuilder);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2468,7 +2473,7 @@ void nsDisplayList::HitTest(nsDisplayListBuilder* aBuilder, const nsRect& aRect,
|
||||
// Collect leaves of the current 3D rendering context.
|
||||
for (item = GetBottom(); item; item = item->GetAbove()) {
|
||||
auto itemType = item->GetType();
|
||||
if (itemType != nsDisplayItem::TYPE_TRANSFORM ||
|
||||
if (itemType != DisplayItemType::TYPE_TRANSFORM ||
|
||||
!static_cast<nsDisplayTransform*>(item)->IsLeafOf3DContext()) {
|
||||
item->HitTest(aBuilder, aRect, aState, aOutFrames);
|
||||
} else {
|
||||
@ -2495,12 +2500,12 @@ void nsDisplayList::HitTest(nsDisplayListBuilder* aBuilder, const nsRect& aRect,
|
||||
nsRect r = item->GetBounds(aBuilder, &snap).Intersect(aRect);
|
||||
auto itemType = item->GetType();
|
||||
bool same3DContext =
|
||||
(itemType == nsDisplayItem::TYPE_TRANSFORM &&
|
||||
(itemType == DisplayItemType::TYPE_TRANSFORM &&
|
||||
static_cast<nsDisplayTransform*>(item)->IsParticipating3DContext()) ||
|
||||
(itemType == nsDisplayItem::TYPE_PERSPECTIVE &&
|
||||
(itemType == DisplayItemType::TYPE_PERSPECTIVE &&
|
||||
item->Frame()->Extend3DContext());
|
||||
if (same3DContext &&
|
||||
(itemType != nsDisplayItem::TYPE_TRANSFORM ||
|
||||
(itemType != DisplayItemType::TYPE_TRANSFORM ||
|
||||
!static_cast<nsDisplayTransform*>(item)->IsLeafOf3DContext())) {
|
||||
if (!item->GetClip().MayIntersect(aRect)) {
|
||||
continue;
|
||||
@ -2522,7 +2527,7 @@ void nsDisplayList::HitTest(nsDisplayListBuilder* aBuilder, const nsRect& aRect,
|
||||
// For 3d transforms with preserve-3d we add hit frames into the temp list
|
||||
// so we can sort them later, otherwise we add them directly to the output list.
|
||||
nsTArray<nsIFrame*> *writeFrames = aOutFrames;
|
||||
if (item->GetType() == nsDisplayItem::TYPE_TRANSFORM &&
|
||||
if (item->GetType() == DisplayItemType::TYPE_TRANSFORM &&
|
||||
static_cast<nsDisplayTransform*>(item)->IsLeafOf3DContext()) {
|
||||
if (outFrames.Length()) {
|
||||
nsDisplayTransform *transform = static_cast<nsDisplayTransform*>(item);
|
||||
@ -3480,12 +3485,12 @@ nsDisplayBackgroundImage::ShouldCreateOwnLayer(nsDisplayListBuilder* aBuilder,
|
||||
static void CheckForBorderItem(nsDisplayItem *aItem, uint32_t& aFlags)
|
||||
{
|
||||
nsDisplayItem* nextItem = aItem->GetAbove();
|
||||
while (nextItem && nextItem->GetType() == nsDisplayItem::TYPE_BACKGROUND) {
|
||||
while (nextItem && nextItem->GetType() == DisplayItemType::TYPE_BACKGROUND) {
|
||||
nextItem = nextItem->GetAbove();
|
||||
}
|
||||
if (nextItem &&
|
||||
nextItem->Frame() == aItem->Frame() &&
|
||||
nextItem->GetType() == nsDisplayItem::TYPE_BORDER) {
|
||||
nextItem->GetType() == DisplayItemType::TYPE_BORDER) {
|
||||
aFlags |= nsCSSRendering::PAINTBG_WILL_PAINT_BORDER;
|
||||
}
|
||||
}
|
||||
@ -3847,8 +3852,7 @@ nsDisplayBackgroundImage::GetBoundsInternal(nsDisplayListBuilder* aBuilder) {
|
||||
uint32_t
|
||||
nsDisplayBackgroundImage::GetPerFrameKey()
|
||||
{
|
||||
return (mLayer << nsDisplayItem::TYPE_BITS) |
|
||||
nsDisplayItem::GetPerFrameKey();
|
||||
return (mLayer << TYPE_BITS) | nsDisplayItem::GetPerFrameKey();
|
||||
}
|
||||
|
||||
nsDisplayTableBackgroundImage::nsDisplayTableBackgroundImage(const InitData& aData,
|
||||
@ -5647,7 +5651,7 @@ nsDisplayWrapList::nsDisplayWrapList(nsDisplayListBuilder* aBuilder,
|
||||
// will have the correct reference frame set (since nsDisplayTransform
|
||||
// handles this explictly).
|
||||
nsDisplayItem *i = mList.GetBottom();
|
||||
if (i && (!i->GetAbove() || i->GetType() == TYPE_TRANSFORM) &&
|
||||
if (i && (!i->GetAbove() || i->GetType() == DisplayItemType::TYPE_TRANSFORM) &&
|
||||
i->Frame() == mFrame) {
|
||||
mReferenceFrame = i->ReferenceFrame();
|
||||
mToReferenceFrame = i->ToReferenceFrame();
|
||||
@ -5683,8 +5687,6 @@ nsDisplayWrapList::nsDisplayWrapList(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
nsDisplayWrapList::~nsDisplayWrapList() {
|
||||
mList.DeleteAll();
|
||||
|
||||
MOZ_COUNT_DTOR(nsDisplayWrapList);
|
||||
}
|
||||
|
||||
@ -5765,7 +5767,7 @@ RequiredLayerStateForChildren(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
LayerState state = i->GetLayerState(aBuilder, aManager, aParameters);
|
||||
if (state == LAYER_ACTIVE && i->GetType() == nsDisplayItem::TYPE_BLEND_MODE) {
|
||||
if (state == LAYER_ACTIVE && i->GetType() == DisplayItemType::TYPE_BLEND_MODE) {
|
||||
// nsDisplayBlendMode always returns LAYER_ACTIVE to ensure that the
|
||||
// blending operation happens in the intermediate surface of its parent
|
||||
// display item (usually an nsDisplayBlendContainer). But this does not
|
||||
@ -6024,7 +6026,7 @@ nsDisplayOpacity::ShouldFlattenAway(nsDisplayListBuilder* aBuilder)
|
||||
bool snap;
|
||||
uint32_t numChildren = 0;
|
||||
for (; numChildren < ArrayLength(children) && child; numChildren++, child = child->GetAbove()) {
|
||||
if (child->GetType() == nsDisplayItem::TYPE_LAYER_EVENT_REGIONS) {
|
||||
if (child->GetType() == DisplayItemType::TYPE_LAYER_EVENT_REGIONS) {
|
||||
numChildren--;
|
||||
continue;
|
||||
}
|
||||
@ -6098,7 +6100,7 @@ nsDisplayOpacity::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
bool nsDisplayOpacity::TryMerge(nsDisplayItem* aItem) {
|
||||
if (aItem->GetType() != TYPE_OPACITY)
|
||||
if (aItem->GetType() != DisplayItemType::TYPE_OPACITY)
|
||||
return false;
|
||||
// items for the same content element should be merged into a single
|
||||
// compositing group
|
||||
@ -6247,7 +6249,7 @@ bool nsDisplayBlendMode::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
bool nsDisplayBlendMode::TryMerge(nsDisplayItem* aItem) {
|
||||
if (aItem->GetType() != TYPE_BLEND_MODE)
|
||||
if (aItem->GetType() != DisplayItemType::TYPE_BLEND_MODE)
|
||||
return false;
|
||||
nsDisplayBlendMode* item = static_cast<nsDisplayBlendMode*>(aItem);
|
||||
// items for the same content element should be merged into a single
|
||||
@ -6338,7 +6340,7 @@ nsDisplayBlendContainer::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder
|
||||
}
|
||||
|
||||
bool nsDisplayBlendContainer::TryMerge(nsDisplayItem* aItem) {
|
||||
if (aItem->GetType() != TYPE_BLEND_CONTAINER)
|
||||
if (aItem->GetType() != DisplayItemType::TYPE_BLEND_CONTAINER)
|
||||
return false;
|
||||
// items for the same content element should be merged into a single
|
||||
// compositing group
|
||||
@ -6768,7 +6770,7 @@ nsDisplayFixedPosition::BuildLayer(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
bool nsDisplayFixedPosition::TryMerge(nsDisplayItem* aItem) {
|
||||
if (aItem->GetType() != TYPE_FIXED_POSITION)
|
||||
if (aItem->GetType() != DisplayItemType::TYPE_FIXED_POSITION)
|
||||
return false;
|
||||
// Items with the same fixed position frame can be merged.
|
||||
nsDisplayFixedPosition* other = static_cast<nsDisplayFixedPosition*>(aItem);
|
||||
@ -6927,7 +6929,7 @@ nsDisplayStickyPosition::BuildLayer(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
bool nsDisplayStickyPosition::TryMerge(nsDisplayItem* aItem) {
|
||||
if (aItem->GetType() != TYPE_STICKY_POSITION)
|
||||
if (aItem->GetType() != DisplayItemType::TYPE_STICKY_POSITION)
|
||||
return false;
|
||||
// Items with the same fixed position frame can be merged.
|
||||
nsDisplayStickyPosition* other = static_cast<nsDisplayStickyPosition*>(aItem);
|
||||
@ -8368,7 +8370,7 @@ nsDisplayPerspective::nsDisplayPerspective(nsDisplayListBuilder* aBuilder,
|
||||
, mIndex(aBuilder->AllocatePerspectiveItemIndex())
|
||||
{
|
||||
MOZ_ASSERT(mList.GetChildren()->Count() == 1);
|
||||
MOZ_ASSERT(mList.GetChildren()->GetTop()->GetType() == TYPE_TRANSFORM);
|
||||
MOZ_ASSERT(mList.GetChildren()->GetTop()->GetType() == DisplayItemType::TYPE_TRANSFORM);
|
||||
}
|
||||
|
||||
already_AddRefed<Layer>
|
||||
@ -8716,7 +8718,7 @@ nsDisplayMask::~nsDisplayMask()
|
||||
|
||||
bool nsDisplayMask::TryMerge(nsDisplayItem* aItem)
|
||||
{
|
||||
if (aItem->GetType() != TYPE_MASK)
|
||||
if (aItem->GetType() != DisplayItemType::TYPE_MASK)
|
||||
return false;
|
||||
|
||||
// Do not merge items for box-decoration-break:clone elements,
|
||||
@ -9055,7 +9057,7 @@ nsDisplayFilter::BuildLayer(nsDisplayListBuilder* aBuilder,
|
||||
|
||||
bool nsDisplayFilter::TryMerge(nsDisplayItem* aItem)
|
||||
{
|
||||
if (aItem->GetType() != TYPE_FILTER) {
|
||||
if (aItem->GetType() != DisplayItemType::TYPE_FILTER) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "mozilla/gfx/UserData.h"
|
||||
#include "mozilla/layers/LayerAttributes.h"
|
||||
#include "nsCSSRenderingBorders.h"
|
||||
#include "nsDisplayItemTypes.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include "nsTHashtable.h"
|
||||
@ -120,8 +121,12 @@ typedef mozilla::EnumSet<mozilla::gfx::CompositionOp> BlendModeSet;
|
||||
|
||||
// All types are defined in nsDisplayItemTypes.h
|
||||
#define NS_DISPLAY_DECL_NAME(n, e) \
|
||||
virtual const char* Name() override { return n; } \
|
||||
virtual Type GetType() override { return e; }
|
||||
virtual const char* Name() const override { return n; } \
|
||||
virtual DisplayItemType GetType() const override { return DisplayItemType::e; } \
|
||||
void* operator new(size_t aSize, \
|
||||
nsDisplayListBuilder* aBuilder) { \
|
||||
return aBuilder->Allocate(aSize, DisplayItemType::e); \
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@ -743,7 +748,9 @@ public:
|
||||
* builder is destroyed. This memory holds nsDisplayItems. nsDisplayItem
|
||||
* destructors are called as soon as the item is no longer used.
|
||||
*/
|
||||
void* Allocate(size_t aSize);
|
||||
void* Allocate(size_t aSize, DisplayItemType aType);
|
||||
|
||||
void Destroy(DisplayItemType aType, void* aPtr);
|
||||
|
||||
/**
|
||||
* Allocate a new ActiveScrolledRoot in the arena. Will be cleaned up
|
||||
@ -1627,6 +1634,7 @@ public:
|
||||
nsDisplayItem(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame);
|
||||
nsDisplayItem(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
|
||||
const ActiveScrolledRoot* aActiveScrolledRoot);
|
||||
|
||||
/**
|
||||
* This constructor is only used in rare cases when we need to construct
|
||||
* temporary items.
|
||||
@ -1644,15 +1652,17 @@ public:
|
||||
#endif
|
||||
{
|
||||
}
|
||||
virtual ~nsDisplayItem() {}
|
||||
|
||||
void* operator new(size_t aSize,
|
||||
nsDisplayListBuilder* aBuilder) {
|
||||
return aBuilder->Allocate(aSize);
|
||||
protected:
|
||||
virtual ~nsDisplayItem() {
|
||||
}
|
||||
public:
|
||||
|
||||
// Contains all the type integers for each display list item type
|
||||
#include "nsDisplayItemTypes.h"
|
||||
virtual void Destroy(nsDisplayListBuilder* aBuilder)
|
||||
{
|
||||
DisplayItemType type = GetType();
|
||||
this->~nsDisplayItem();
|
||||
aBuilder->Destroy(type, this);
|
||||
}
|
||||
|
||||
struct HitTestState {
|
||||
explicit HitTestState() : mInPreserves3D(false) {}
|
||||
@ -1672,13 +1682,14 @@ public:
|
||||
* outlines for the same element. For this, we need a way for items to
|
||||
* identify their type. We use the type for other purposes too.
|
||||
*/
|
||||
virtual Type GetType() = 0;
|
||||
virtual DisplayItemType GetType() const = 0;
|
||||
/**
|
||||
* Pairing this with the GetUnderlyingFrame() pointer gives a key that
|
||||
* uniquely identifies this display item in the display item tree.
|
||||
* XXX check nsOptionEventGrabberWrapper/nsXULEventRedirectorWrapper
|
||||
*/
|
||||
virtual uint32_t GetPerFrameKey() { return uint32_t(GetType()); }
|
||||
|
||||
/**
|
||||
* This is called after we've constructed a display list for event handling.
|
||||
* When this is called, we've already ensured that aRect intersects the
|
||||
@ -2118,7 +2129,7 @@ public:
|
||||
/**
|
||||
* For debugging and stuff
|
||||
*/
|
||||
virtual const char* Name() = 0;
|
||||
virtual const char* Name() const = 0;
|
||||
|
||||
virtual void WriteDebugInfo(std::stringstream& aStream) {}
|
||||
|
||||
@ -2274,7 +2285,6 @@ public:
|
||||
if (mSentinel.mAbove) {
|
||||
NS_WARNING("Nonempty list left over?");
|
||||
}
|
||||
DeleteAll();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2358,7 +2368,7 @@ public:
|
||||
/**
|
||||
* Remove all items from the list and call their destructors.
|
||||
*/
|
||||
void DeleteAll();
|
||||
void DeleteAll(nsDisplayListBuilder* aBuilder);
|
||||
|
||||
/**
|
||||
* @return the item at the top of the list, or null if the list is empty
|
||||
@ -2606,6 +2616,15 @@ public:
|
||||
*/
|
||||
nsDisplayList* Content() const { return mContent; }
|
||||
|
||||
void DeleteAll(nsDisplayListBuilder* aBuilder) {
|
||||
BorderBackground()->DeleteAll(aBuilder);
|
||||
BlockBorderBackgrounds()->DeleteAll(aBuilder);
|
||||
Floats()->DeleteAll(aBuilder);
|
||||
PositionedDescendants()->DeleteAll(aBuilder);
|
||||
Outlines()->DeleteAll(aBuilder);
|
||||
Content()->DeleteAll(aBuilder);
|
||||
}
|
||||
|
||||
nsDisplayListSet(nsDisplayList* aBorderBackground,
|
||||
nsDisplayList* aBlockBorderBackgrounds,
|
||||
nsDisplayList* aFloats,
|
||||
@ -2735,7 +2754,7 @@ public:
|
||||
const nsRect& aDirtyRect, nsPoint aFramePt);
|
||||
|
||||
nsDisplayGeneric(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
|
||||
PaintCallback aPaint, const char* aName, Type aType)
|
||||
PaintCallback aPaint, const char* aName, DisplayItemType aType)
|
||||
: nsDisplayItem(aBuilder, aFrame)
|
||||
, mPaint(aPaint)
|
||||
, mOldPaint(nullptr)
|
||||
@ -2747,7 +2766,7 @@ public:
|
||||
|
||||
// XXX: should be removed eventually
|
||||
nsDisplayGeneric(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
|
||||
OldPaintCallback aOldPaint, const char* aName, Type aType)
|
||||
OldPaintCallback aOldPaint, const char* aName, DisplayItemType aType)
|
||||
: nsDisplayItem(aBuilder, aFrame)
|
||||
, mPaint(nullptr)
|
||||
, mOldPaint(aOldPaint)
|
||||
@ -2771,13 +2790,26 @@ public:
|
||||
mOldPaint(mFrame, aCtx, mVisibleRect, ToReferenceFrame());
|
||||
}
|
||||
}
|
||||
NS_DISPLAY_DECL_NAME(mName, mType)
|
||||
virtual const char* Name() const override { return mName; }
|
||||
virtual DisplayItemType GetType() const override { return mType; }
|
||||
void* operator new(size_t aSize,
|
||||
nsDisplayListBuilder* aBuilder) {
|
||||
return aBuilder->Allocate(aSize, DisplayItemType::TYPE_GENERIC);
|
||||
}
|
||||
|
||||
// This override is needed because GetType() for nsDisplayGeneric subclasses
|
||||
// does not match TYPE_GENERIC that was used to allocate the object.
|
||||
virtual void Destroy(nsDisplayListBuilder* aBuilder) override
|
||||
{
|
||||
this->~nsDisplayGeneric();
|
||||
aBuilder->Destroy(DisplayItemType::TYPE_GENERIC, this);
|
||||
}
|
||||
|
||||
protected:
|
||||
PaintCallback mPaint;
|
||||
OldPaintCallback mOldPaint; // XXX: should be removed eventually
|
||||
const char* mName;
|
||||
Type mType;
|
||||
DisplayItemType mType;
|
||||
};
|
||||
|
||||
#if defined(MOZ_REFLOW_PERF_DSP) && defined(MOZ_REFLOW_PERF)
|
||||
@ -3086,14 +3118,14 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
NS_DISPLAY_DECL_NAME("SolidColorRegion", TYPE_SOLID_COLOR_REGION)
|
||||
|
||||
protected:
|
||||
|
||||
virtual nsRect GetBounds(nsDisplayListBuilder* aBuilder, bool* aSnap) override;
|
||||
virtual void Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx) override;
|
||||
virtual void WriteDebugInfo(std::stringstream& aStream) override;
|
||||
|
||||
NS_DISPLAY_DECL_NAME("SolidColorRegion", TYPE_SOLID_COLOR_REGION)
|
||||
|
||||
private:
|
||||
nsRegion mRegion;
|
||||
Color mColor;
|
||||
@ -3297,7 +3329,7 @@ public:
|
||||
nsDisplayTableBackgroundImage(const InitData& aInitData, nsIFrame* aCellFrame);
|
||||
|
||||
virtual uint32_t GetPerFrameKey() override {
|
||||
return (static_cast<uint8_t>(mTableType) << nsDisplayItem::TYPE_BITS) |
|
||||
return (static_cast<uint8_t>(mTableType) << TYPE_BITS) |
|
||||
nsDisplayItem::GetPerFrameKey();
|
||||
}
|
||||
|
||||
@ -3452,7 +3484,7 @@ public:
|
||||
{ }
|
||||
|
||||
virtual uint32_t GetPerFrameKey() override {
|
||||
return (static_cast<uint8_t>(mTableType) << nsDisplayItem::TYPE_BITS) |
|
||||
return (static_cast<uint8_t>(mTableType) << TYPE_BITS) |
|
||||
nsDisplayItem::GetPerFrameKey();
|
||||
}
|
||||
protected:
|
||||
@ -3823,6 +3855,11 @@ public:
|
||||
mBaseVisibleRect = mVisibleRect;
|
||||
}
|
||||
virtual ~nsDisplayWrapList();
|
||||
|
||||
virtual void Destroy(nsDisplayListBuilder* aBuilder) override {
|
||||
mList.DeleteAll(aBuilder);
|
||||
nsDisplayItem::Destroy(aBuilder);
|
||||
}
|
||||
/**
|
||||
* Call this if the wrapped list is changed.
|
||||
*/
|
||||
@ -4055,8 +4092,7 @@ public:
|
||||
// We don't need to compute an invalidation region since we have LayerTreeInvalidation
|
||||
}
|
||||
virtual uint32_t GetPerFrameKey() override {
|
||||
return (mIndex << nsDisplayItem::TYPE_BITS) |
|
||||
nsDisplayItem::GetPerFrameKey();
|
||||
return (mIndex << TYPE_BITS) | nsDisplayItem::GetPerFrameKey();
|
||||
}
|
||||
virtual LayerState GetLayerState(nsDisplayListBuilder* aBuilder,
|
||||
LayerManager* aManager,
|
||||
@ -4111,8 +4147,7 @@ public:
|
||||
return false;
|
||||
}
|
||||
virtual uint32_t GetPerFrameKey() override {
|
||||
return (mIsForBackground ? 1 << nsDisplayItem::TYPE_BITS : 0) |
|
||||
nsDisplayItem::GetPerFrameKey();
|
||||
return (mIsForBackground ? 1 << TYPE_BITS : 0) | nsDisplayItem::GetPerFrameKey();
|
||||
}
|
||||
NS_DISPLAY_DECL_NAME("BlendContainer", TYPE_BLEND_CONTAINER)
|
||||
|
||||
@ -4320,7 +4355,7 @@ public:
|
||||
|
||||
virtual bool ShouldFixToViewport(nsDisplayListBuilder* aBuilder) override { return mIsFixedBackground; }
|
||||
|
||||
virtual uint32_t GetPerFrameKey() override { return (mIndex << nsDisplayItem::TYPE_BITS) | nsDisplayItem::GetPerFrameKey(); }
|
||||
virtual uint32_t GetPerFrameKey() override { return (mIndex << TYPE_BITS) | nsDisplayItem::GetPerFrameKey(); }
|
||||
|
||||
AnimatedGeometryRoot* AnimatedGeometryRootForScrollMetadata() const override {
|
||||
return mAnimatedGeometryRootForScrollMetadata;
|
||||
@ -4350,8 +4385,8 @@ public:
|
||||
nsIFrame* aAncestorFrame);
|
||||
|
||||
virtual uint32_t GetPerFrameKey() override {
|
||||
return (mIndex << (nsDisplayItem::TYPE_BITS + static_cast<uint8_t>(TableTypeBits::COUNT))) |
|
||||
(static_cast<uint8_t>(mTableType) << nsDisplayItem::TYPE_BITS) |
|
||||
return (mIndex << (TYPE_BITS + static_cast<uint8_t>(TableTypeBits::COUNT))) |
|
||||
(static_cast<uint8_t>(mTableType) << TYPE_BITS) |
|
||||
nsDisplayItem::GetPerFrameKey();
|
||||
}
|
||||
protected:
|
||||
@ -4646,6 +4681,12 @@ class nsDisplayTransform: public nsDisplayItem
|
||||
nsDisplayWrapList(aBuilder, aFrame, aItem) {}
|
||||
virtual ~StoreList() {}
|
||||
|
||||
// This override is needed since StoreList is only allocated from the stack.
|
||||
virtual void Destroy(nsDisplayListBuilder* aBuilder) override
|
||||
{
|
||||
mList.DeleteAll(aBuilder);
|
||||
}
|
||||
|
||||
virtual void UpdateBounds(nsDisplayListBuilder* aBuilder) override {
|
||||
// For extending 3d rendering context, the bounds would be
|
||||
// updated by DoUpdateBoundsPreserves3D(), not here.
|
||||
@ -4700,6 +4741,12 @@ public:
|
||||
}
|
||||
#endif
|
||||
|
||||
virtual void Destroy(nsDisplayListBuilder* aBuilder) override
|
||||
{
|
||||
mStoredList.Destroy(aBuilder);
|
||||
nsDisplayItem::Destroy(aBuilder);
|
||||
}
|
||||
|
||||
NS_DISPLAY_DECL_NAME("nsDisplayTransform", TYPE_TRANSFORM)
|
||||
|
||||
virtual nsRect GetComponentAlphaBounds(nsDisplayListBuilder* aBuilder) override
|
||||
@ -4734,7 +4781,7 @@ public:
|
||||
nsRegion *aVisibleRegion) override;
|
||||
virtual bool TryMerge(nsDisplayItem *aItem) override;
|
||||
|
||||
virtual uint32_t GetPerFrameKey() override { return (mIndex << nsDisplayItem::TYPE_BITS) | nsDisplayItem::GetPerFrameKey(); }
|
||||
virtual uint32_t GetPerFrameKey() override { return (mIndex << TYPE_BITS) | nsDisplayItem::GetPerFrameKey(); }
|
||||
|
||||
virtual void ComputeInvalidationRegion(nsDisplayListBuilder* aBuilder,
|
||||
const nsDisplayItemGeometry* aGeometry,
|
||||
@ -4763,7 +4810,7 @@ public:
|
||||
}
|
||||
|
||||
enum {
|
||||
INDEX_MAX = UINT32_MAX >> nsDisplayItem::TYPE_BITS
|
||||
INDEX_MAX = UINT32_MAX >> TYPE_BITS
|
||||
};
|
||||
|
||||
/**
|
||||
@ -5015,7 +5062,7 @@ public:
|
||||
nsIFrame* aPerspectiveFrame,
|
||||
nsDisplayList* aList);
|
||||
|
||||
virtual uint32_t GetPerFrameKey() override { return (mIndex << nsDisplayItem::TYPE_BITS) | nsDisplayItem::GetPerFrameKey(); }
|
||||
virtual uint32_t GetPerFrameKey() override { return (mIndex << TYPE_BITS) | nsDisplayItem::GetPerFrameKey(); }
|
||||
|
||||
virtual void HitTest(nsDisplayListBuilder* aBuilder, const nsRect& aRect,
|
||||
HitTestState* aState, nsTArray<nsIFrame*> *aOutFrames) override
|
||||
@ -5084,6 +5131,12 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
virtual void Destroy(nsDisplayListBuilder* aBuilder) override
|
||||
{
|
||||
mList.GetChildren()->DeleteAll(aBuilder);
|
||||
nsDisplayItem::Destroy(aBuilder);
|
||||
}
|
||||
|
||||
private:
|
||||
nsDisplayWrapList mList;
|
||||
nsIFrame* mTransformFrame;
|
||||
@ -5147,8 +5200,8 @@ public:
|
||||
}
|
||||
|
||||
static nsCharClipDisplayItem* CheckCast(nsDisplayItem* aItem) {
|
||||
nsDisplayItem::Type t = aItem->GetType();
|
||||
return (t == nsDisplayItem::TYPE_TEXT)
|
||||
DisplayItemType t = aItem->GetType();
|
||||
return (t == DisplayItemType::TYPE_TEXT)
|
||||
? static_cast<nsCharClipDisplayItem*>(aItem) : nullptr;
|
||||
}
|
||||
|
||||
|
@ -325,16 +325,16 @@ ImageLoader::GetPresContext()
|
||||
void InvalidateImagesCallback(nsIFrame* aFrame,
|
||||
DisplayItemData* aItem)
|
||||
{
|
||||
nsDisplayItem::Type type = nsDisplayItem::GetDisplayItemTypeFromKey(aItem->GetDisplayItemKey());
|
||||
uint8_t flags = nsDisplayItem::GetDisplayItemFlagsForType(type);
|
||||
DisplayItemType type = GetDisplayItemTypeFromKey(aItem->GetDisplayItemKey());
|
||||
uint8_t flags = GetDisplayItemFlagsForType(type);
|
||||
|
||||
if (flags & nsDisplayItem::TYPE_RENDERS_NO_IMAGES) {
|
||||
if (flags & TYPE_RENDERS_NO_IMAGES) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (nsLayoutUtils::InvalidationDebuggingIsEnabled()) {
|
||||
printf_stderr("Invalidating display item(type=%d) based on frame %p \
|
||||
because it might contain an invalidated image\n", type, aFrame);
|
||||
because it might contain an invalidated image\n", static_cast<uint32_t>(type), aFrame);
|
||||
}
|
||||
aItem->Invalidate();
|
||||
aFrame->SchedulePaint();
|
||||
|
@ -11,10 +11,10 @@ namespace mozilla {
|
||||
|
||||
/* static */ const LayerAnimationInfo::Record LayerAnimationInfo::sRecords[] =
|
||||
{ { eCSSProperty_transform,
|
||||
nsDisplayItem::TYPE_TRANSFORM,
|
||||
DisplayItemType::TYPE_TRANSFORM,
|
||||
nsChangeHint_UpdateTransformLayer },
|
||||
{ eCSSProperty_opacity,
|
||||
nsDisplayItem::TYPE_OPACITY,
|
||||
DisplayItemType::TYPE_OPACITY,
|
||||
nsChangeHint_UpdateOpacityLayer } };
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -20,7 +20,7 @@ struct LayerAnimationInfo {
|
||||
// a record of the corresponding layer type and change hint.
|
||||
struct Record {
|
||||
nsCSSPropertyID mProperty;
|
||||
nsDisplayItem::Type mLayerType;
|
||||
DisplayItemType mLayerType;
|
||||
nsChangeHint mChangeHint;
|
||||
};
|
||||
|
||||
|
@ -513,7 +513,7 @@ nsTableCellFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
aLists.BorderBackground()->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayGeneric(aBuilder, this, ::PaintTableCellSelection,
|
||||
"TableCellSelection",
|
||||
nsDisplayItem::TYPE_TABLE_CELL_SELECTION));
|
||||
DisplayItemType::TYPE_TABLE_CELL_SELECTION));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -780,7 +780,7 @@ nsImageBoxFrame::OnFrameUpdate(imgIRequest* aRequest)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
InvalidateLayer(nsDisplayItem::TYPE_XUL_IMAGE);
|
||||
InvalidateLayer(DisplayItemType::TYPE_XUL_IMAGE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user