Skip to content
This repository has been archived by the owner on Aug 4, 2022. It is now read-only.

Commit

Permalink
Backed out 5 changesets (bug 1554499) for frequent crashes, at least …
Browse files Browse the repository at this point in the history
…on OS X (bug 1594381). a=backout

Backed out changeset 3a49bec95338 (bug 1554499)
Backed out changeset c802ab8cc730 (bug 1554499)
Backed out changeset f60fee484460 (bug 1554499)
Backed out changeset a49d1c9e8b14 (bug 1554499)
Backed out changeset 133cddb65f59 (bug 1554499)
  • Loading branch information
Archaeopteryx committed Nov 6, 2019
1 parent 65fd159 commit d844399
Show file tree
Hide file tree
Showing 9 changed files with 128 additions and 378 deletions.
13 changes: 2 additions & 11 deletions gfx/layers/wr/WebRenderCommandBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -192,17 +192,8 @@ class WebRenderCommandBuilder final {
frame->AddProperty(WebRenderUserDataProperty::Key(), userDataTable);
}

// TODO (miko): This is a slight hack. For OMTA, WebRenderAnimationData
// needs to be accessible with just (frame, display item type) -key,
// so a more specific per frame key cannot be used.
const uint32_t key =
T::Type() == WebRenderUserData::UserDataType::eAnimation
? static_cast<uint32_t>(aItem->GetType())
: aItem->GetPerFrameKey();

RefPtr<WebRenderUserData>& data =
userDataTable->GetOrInsert(WebRenderUserDataKey(key, T::Type()));

RefPtr<WebRenderUserData>& data = userDataTable->GetOrInsert(
WebRenderUserDataKey(aItem->GetPerFrameKey(), T::Type()));
if (!data) {
data = new T(GetRenderRootStateManager(aRenderRoot), aItem);
mWebRenderUserDatas.PutEntry(data);
Expand Down
3 changes: 1 addition & 2 deletions gfx/layers/wr/WebRenderUserData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -338,8 +338,7 @@ WebRenderImageData* WebRenderFallbackData::PaintIntoImage() {

WebRenderAnimationData::WebRenderAnimationData(RenderRootStateManager* aManager,
nsDisplayItem* aItem)
: WebRenderUserData(aManager, static_cast<uint32_t>(aItem->GetType()),
aItem->Frame()) {}
: WebRenderUserData(aManager, aItem) {}

WebRenderAnimationData::~WebRenderAnimationData() {
// It may be the case that nsDisplayItem that created this WebRenderUserData
Expand Down
17 changes: 5 additions & 12 deletions layout/generic/TextOverflow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -157,20 +157,10 @@ class nsDisplayTextOverflowMarker final : public nsPaintedDisplayItem {
: nsPaintedDisplayItem(aBuilder, aFrame),
mRect(aRect),
mStyle(aStyle),
mAscent(aAscent) {
mAscent(aAscent),
mIndex((aLineNumber << 1) + aIndex) {
MOZ_COUNT_CTOR(nsDisplayTextOverflowMarker);
}

// Should have the same argument signature as the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, const nsRect& aRect,
nscoord aAscent,
const StyleTextOverflowSide& aStyle,
uint32_t aLineNumber,
uint16_t aIndex) {
return (aLineNumber << 1) + aIndex;
}

#ifdef NS_BUILD_REFCNT_LOGGING
virtual ~nsDisplayTextOverflowMarker() {
MOZ_COUNT_DTOR(nsDisplayTextOverflowMarker);
Expand Down Expand Up @@ -199,6 +189,8 @@ class nsDisplayTextOverflowMarker final : public nsPaintedDisplayItem {

virtual void Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx) override;

virtual uint16_t CalculatePerFrameKey() const override { return mIndex; }

void PaintTextToContext(gfxContext* aCtx, nsPoint aOffsetFromRect);

virtual bool CreateWebRenderCommands(
Expand All @@ -213,6 +205,7 @@ class nsDisplayTextOverflowMarker final : public nsPaintedDisplayItem {
nsRect mRect; // in reference frame coordinates
const StyleTextOverflowSide mStyle;
nscoord mAscent; // baseline for the marker text in mRect
uint16_t mIndex;
};

static void PaintTextShadowCallback(gfxContext* aCtx, nsPoint aShadowOffset,
Expand Down
12 changes: 4 additions & 8 deletions layout/mathml/nsMathMLChar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1720,17 +1720,10 @@ class nsDisplayMathMLCharForeground final : public nsPaintedDisplayItem {
uint16_t aIndex, bool aIsSelected)
: nsPaintedDisplayItem(aBuilder, aFrame),
mChar(aChar),
mIndex(aIndex),
mIsSelected(aIsSelected) {
MOZ_COUNT_CTOR(nsDisplayMathMLCharForeground);
}

// Should have the same argument signature as the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsMathMLChar* aChar,
uint16_t aIndex, bool aIsSelected) {
return aIndex;
}

#ifdef NS_BUILD_REFCNT_LOGGING
virtual ~nsDisplayMathMLCharForeground() {
MOZ_COUNT_DTOR(nsDisplayMathMLCharForeground);
Expand Down Expand Up @@ -1765,8 +1758,11 @@ class nsDisplayMathMLCharForeground final : public nsPaintedDisplayItem {
return GetBounds(aBuilder, &snap);
}

virtual uint16_t CalculatePerFrameKey() const override { return mIndex; }

private:
nsMathMLChar* mChar;
uint16_t mIndex;
bool mIsSelected;
};

Expand Down
13 changes: 4 additions & 9 deletions layout/mathml/nsMathMLFrame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -304,25 +304,20 @@ class nsDisplayMathMLBar final : public nsPaintedDisplayItem {
public:
nsDisplayMathMLBar(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
const nsRect& aRect, uint16_t aIndex)
: nsPaintedDisplayItem(aBuilder, aFrame), mRect(aRect) {
: nsPaintedDisplayItem(aBuilder, aFrame), mRect(aRect), mIndex(aIndex) {
MOZ_COUNT_CTOR(nsDisplayMathMLBar);
}

// Should have the same argument signature as the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, const nsRect& aRect,
uint16_t aIndex) {
return aIndex;
}

#ifdef NS_BUILD_REFCNT_LOGGING
virtual ~nsDisplayMathMLBar() { MOZ_COUNT_DTOR(nsDisplayMathMLBar); }
#endif

virtual uint16_t CalculatePerFrameKey() const override { return mIndex; }

virtual void Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx) override;
NS_DISPLAY_DECL_NAME("MathMLBar", TYPE_MATHML_BAR)
private:
nsRect mRect;
uint16_t mIndex;
};

void nsDisplayMathMLBar::Paint(nsDisplayListBuilder* aBuilder,
Expand Down
11 changes: 2 additions & 9 deletions layout/mathml/nsMathMLmencloseFrame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -717,19 +717,12 @@ class nsDisplayNotation final : public nsPaintedDisplayItem {
mType(aType) {
MOZ_COUNT_CTOR(nsDisplayNotation);
}

// Should have the same argument signature as the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, const nsRect& aRect,
nscoord aThickness,
nsMencloseNotation aType) {
return aType;
}

#ifdef NS_BUILD_REFCNT_LOGGING
virtual ~nsDisplayNotation() { MOZ_COUNT_DTOR(nsDisplayNotation); }
#endif

virtual uint16_t CalculatePerFrameKey() const override { return mType; }

virtual void Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx) override;
NS_DISPLAY_DECL_NAME("MathMLMencloseNotation", TYPE_MATHML_MENCLOSE_NOTATION)

Expand Down
56 changes: 21 additions & 35 deletions layout/painting/nsDisplayList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4112,13 +4112,6 @@ nsDisplayBackgroundImage::nsDisplayBackgroundImage(
}
}

// Should have an identical argument signature to the above ctor
uint16_t nsDisplayBackgroundImage::CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, const InitData& aInitData,
nsIFrame* aFrameForBounds) {
return aInitData.layer;
}

nsDisplayBackgroundImage::~nsDisplayBackgroundImage() {
#ifdef NS_BUILD_REFCNT_LOGGING
MOZ_COUNT_DTOR(nsDisplayBackgroundImage);
Expand Down Expand Up @@ -4922,20 +4915,13 @@ nsDisplayTableBackgroundImage::nsDisplayTableBackgroundImage(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, const InitData& aData,
nsIFrame* aCellFrame)
: nsDisplayBackgroundImage(aBuilder, aFrame, aData, aCellFrame),
mStyleFrame(aCellFrame) {
mStyleFrame(aCellFrame),
mTableType(GetTableTypeFromFrame(mStyleFrame)) {
if (aBuilder->IsRetainingDisplayList()) {
mStyleFrame->AddDisplayItem(this);
}
}

// Should have an identical argument signature to the above ctor
uint16_t nsDisplayTableBackgroundImage::CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, const InitData& aData,
nsIFrame* aCellFrame) {
return CalculateTablePerFrameKey(aData.layer,
GetTableTypeFromFrame(aCellFrame));
}

nsDisplayTableBackgroundImage::~nsDisplayTableBackgroundImage() {
if (mStyleFrame) {
mStyleFrame->RemoveDisplayItem(this);
Expand Down Expand Up @@ -5528,6 +5514,7 @@ nsDisplayCompositorHitTestInfo::nsDisplayCompositorHitTestInfo(
const mozilla::gfx::CompositorHitTestInfo& aHitTestFlags, uint16_t aIndex,
const mozilla::Maybe<nsRect>& aArea)
: nsDisplayHitTestInfoItem(aBuilder, aFrame),
mIndex(aIndex),
mAppUnitsPerDevPixel(mFrame->PresContext()->AppUnitsPerDevPixel()) {
MOZ_COUNT_CTOR(nsDisplayCompositorHitTestInfo);
// We should never even create this display item if we're not building
Expand All @@ -5543,31 +5530,17 @@ nsDisplayCompositorHitTestInfo::nsDisplayCompositorHitTestInfo(
InitializeScrollTarget(aBuilder);
}

// Should have the same argument signature as the above ctor
uint16_t nsDisplayCompositorHitTestInfo::CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
const mozilla::gfx::CompositorHitTestInfo& aHitTestFlags, uint16_t aIndex,
const mozilla::Maybe<nsRect>& aArea) {
return aIndex;
}

nsDisplayCompositorHitTestInfo::nsDisplayCompositorHitTestInfo(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
mozilla::UniquePtr<HitTestInfo>&& aHitTestInfo)
: nsDisplayHitTestInfoItem(aBuilder, aFrame),
mIndex(0),
mAppUnitsPerDevPixel(mFrame->PresContext()->AppUnitsPerDevPixel()) {
MOZ_COUNT_CTOR(nsDisplayCompositorHitTestInfo);
SetHitTestInfo(std::move(aHitTestInfo));
InitializeScrollTarget(aBuilder);
}

// Should have the same argument signature as the above ctor
uint16_t nsDisplayCompositorHitTestInfo::CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
mozilla::UniquePtr<HitTestInfo>&& aHitTestInfo) {
return 0;
}

void nsDisplayCompositorHitTestInfo::InitializeScrollTarget(
nsDisplayListBuilder* aBuilder) {
if (aBuilder->GetCurrentScrollbarDirection().isSome()) {
Expand Down Expand Up @@ -5622,6 +5595,10 @@ bool nsDisplayCompositorHitTestInfo::CreateWebRenderCommands(
return true;
}

uint16_t nsDisplayCompositorHitTestInfo::CalculatePerFrameKey() const {
return mIndex;
}

int32_t nsDisplayCompositorHitTestInfo::ZIndex() const {
return mOverrideZIndex ? *mOverrideZIndex
: nsDisplayHitTestInfoItem::ZIndex();
Expand Down Expand Up @@ -6159,6 +6136,7 @@ nsDisplayWrapList::nsDisplayWrapList(
: nsDisplayHitTestInfoItem(aBuilder, aFrame, aActiveScrolledRoot),
mFrameActiveScrolledRoot(aBuilder->CurrentActiveScrolledRoot()),
mOverrideZIndex(0),
mIndex(aIndex),
mHasZIndexOverride(false),
mClearingClipChain(aClearClipChain) {
MOZ_COUNT_CTOR(nsDisplayWrapList);
Expand Down Expand Up @@ -6202,6 +6180,7 @@ nsDisplayWrapList::nsDisplayWrapList(nsDisplayListBuilder* aBuilder,
: nsDisplayHitTestInfoItem(aBuilder, aFrame,
aBuilder->CurrentActiveScrolledRoot()),
mOverrideZIndex(0),
mIndex(0),
mHasZIndexOverride(false) {
MOZ_COUNT_CTOR(nsDisplayWrapList);

Expand Down Expand Up @@ -6759,7 +6738,7 @@ nsDisplayBlendMode::nsDisplayBlendMode(
uint16_t aIndex)
: nsDisplayWrapList(aBuilder, aFrame, aList, aActiveScrolledRoot, true),
mBlendMode(aBlendMode),
mIsBackgroundBlendMode(aIndex != 0) {
mIndex(aIndex) {
MOZ_COUNT_CTOR(nsDisplayBlendMode);
}

Expand Down Expand Up @@ -6841,7 +6820,7 @@ bool nsDisplayBlendMode::CanMerge(const nsDisplayItem* aItem) const {
const nsDisplayBlendMode* item =
static_cast<const nsDisplayBlendMode*>(aItem);

if (item->mIsBackgroundBlendMode || mIsBackgroundBlendMode) {
if (item->mIndex != 0 || mIndex != 0) {
// Don't merge background-blend-mode items
return false;
}
Expand Down Expand Up @@ -6935,7 +6914,8 @@ nsDisplayOwnLayer::nsDisplayOwnLayer(
mFlags(aFlags),
mScrollbarData(aScrollbarData),
mForceActive(aForceActive),
mWrAnimationId(0) {
mWrAnimationId(0),
mIndex(aIndex) {
MOZ_COUNT_CTOR(nsDisplayOwnLayer);

// For scroll thumb layers, override the AGR to be the thumb's AGR rather
Expand Down Expand Up @@ -7395,6 +7375,7 @@ nsDisplayFixedPosition::nsDisplayFixedPosition(
const ActiveScrolledRoot* aContainerASR)
: nsDisplayOwnLayer(aBuilder, aFrame, aList, aActiveScrolledRoot),
mContainerASR(aContainerASR),
mIndex(0),
mIsFixedBackground(false) {
MOZ_COUNT_CTOR(nsDisplayFixedPosition);
Init(aBuilder);
Expand All @@ -7407,6 +7388,7 @@ nsDisplayFixedPosition::nsDisplayFixedPosition(nsDisplayListBuilder* aBuilder,
: nsDisplayOwnLayer(aBuilder, aFrame, aList,
aBuilder->CurrentActiveScrolledRoot()),
mContainerASR(nullptr), // XXX maybe this should be something?
mIndex(aIndex),
mIsFixedBackground(true) {
MOZ_COUNT_CTOR(nsDisplayFixedPosition);
Init(aBuilder);
Expand Down Expand Up @@ -7542,7 +7524,8 @@ nsDisplayTableFixedPosition::nsDisplayTableFixedPosition(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
uint16_t aIndex, nsIFrame* aAncestorFrame)
: nsDisplayFixedPosition(aBuilder, aFrame, aList, aIndex),
mAncestorFrame(aAncestorFrame) {
mAncestorFrame(aAncestorFrame),
mTableType(GetTableTypeFromFrame(aAncestorFrame)) {
if (aBuilder->IsRetainingDisplayList()) {
mAncestorFrame->AddDisplayItem(this);
}
Expand Down Expand Up @@ -8024,6 +8007,7 @@ nsDisplayTransform::nsDisplayTransform(nsDisplayListBuilder* aBuilder,
mAnimatedGeometryRootForChildren(mAnimatedGeometryRoot),
mAnimatedGeometryRootForScrollMetadata(mAnimatedGeometryRoot),
mChildrenBuildingRect(aChildrenBuildingRect),
mIndex(aIndex),
mIsTransformSeparator(true),
mAllowAsyncAnimation(false) {
MOZ_COUNT_CTOR(nsDisplayTransform);
Expand All @@ -8041,6 +8025,7 @@ nsDisplayTransform::nsDisplayTransform(nsDisplayListBuilder* aBuilder,
mAnimatedGeometryRootForChildren(mAnimatedGeometryRoot),
mAnimatedGeometryRootForScrollMetadata(mAnimatedGeometryRoot),
mChildrenBuildingRect(aChildrenBuildingRect),
mIndex(aIndex),
mIsTransformSeparator(false),
mAllowAsyncAnimation(aAllowAsyncAnimation) {
MOZ_COUNT_CTOR(nsDisplayTransform);
Expand All @@ -8058,6 +8043,7 @@ nsDisplayTransform::nsDisplayTransform(
mAnimatedGeometryRootForChildren(mAnimatedGeometryRoot),
mAnimatedGeometryRootForScrollMetadata(mAnimatedGeometryRoot),
mChildrenBuildingRect(aChildrenBuildingRect),
mIndex(aIndex),
mIsTransformSeparator(false),
mAllowAsyncAnimation(false) {
MOZ_COUNT_CTOR(nsDisplayTransform);
Expand Down
Loading

0 comments on commit d844399

Please sign in to comment.