зеркало из https://github.com/mozilla/pjs.git
The slow codepaths for fixed background-attachment should only apply when there's a background image. b=258793 r+sr=roc
This commit is contained in:
Родитель
d1b63ea756
Коммит
cd7b1f831b
|
@ -187,6 +187,14 @@ struct nsStyleBackground : public nsStyleStruct {
|
|||
(NS_STYLE_BG_COLOR_TRANSPARENT | NS_STYLE_BG_IMAGE_NONE)) ==
|
||||
(NS_STYLE_BG_COLOR_TRANSPARENT | NS_STYLE_BG_IMAGE_NONE);
|
||||
}
|
||||
|
||||
PRBool HasFixedBackground() const
|
||||
{
|
||||
// We have to take slower codepaths for fixed background attachment,
|
||||
// but we don't want to do that when there's no image.
|
||||
return mBackgroundAttachment == NS_STYLE_BG_ATTACHMENT_FIXED &&
|
||||
mBackgroundImage;
|
||||
}
|
||||
};
|
||||
|
||||
#define BORDER_COLOR_DEFINED 0x80
|
||||
|
|
|
@ -572,8 +572,7 @@ SyncFrameViewGeometryDependentProperties(nsPresContext* aPresContext,
|
|||
|
||||
// background-attachment: fixed is not really geometry dependent, but
|
||||
// we set it here because it's cheap to do so
|
||||
PRBool fixedBackground = hasBG &&
|
||||
NS_STYLE_BG_ATTACHMENT_FIXED == bg->mBackgroundAttachment;
|
||||
PRBool fixedBackground = hasBG && bg->HasFixedBackground();
|
||||
// If the frame has a fixed background attachment, then indicate that the
|
||||
// view's contents should be repainted and not bitblt'd
|
||||
vm->SetViewBitBltEnabled(aView, !fixedBackground);
|
||||
|
@ -901,8 +900,7 @@ nsContainerFrame::FrameNeedsView(nsIFrame* aFrame)
|
|||
PRBool hasBackground =
|
||||
nsCSSRendering::FindBackground(aFrame->GetPresContext(),
|
||||
aFrame, &color, &isCanvas);
|
||||
if (hasBackground &&
|
||||
NS_STYLE_BG_ATTACHMENT_FIXED == color->mBackgroundAttachment) {
|
||||
if (hasBackground && color->HasFixedBackground()) {
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -572,8 +572,7 @@ SyncFrameViewGeometryDependentProperties(nsPresContext* aPresContext,
|
|||
|
||||
// background-attachment: fixed is not really geometry dependent, but
|
||||
// we set it here because it's cheap to do so
|
||||
PRBool fixedBackground = hasBG &&
|
||||
NS_STYLE_BG_ATTACHMENT_FIXED == bg->mBackgroundAttachment;
|
||||
PRBool fixedBackground = hasBG && bg->HasFixedBackground();
|
||||
// If the frame has a fixed background attachment, then indicate that the
|
||||
// view's contents should be repainted and not bitblt'd
|
||||
vm->SetViewBitBltEnabled(aView, !fixedBackground);
|
||||
|
@ -901,8 +900,7 @@ nsContainerFrame::FrameNeedsView(nsIFrame* aFrame)
|
|||
PRBool hasBackground =
|
||||
nsCSSRendering::FindBackground(aFrame->GetPresContext(),
|
||||
aFrame, &color, &isCanvas);
|
||||
if (hasBackground &&
|
||||
NS_STYLE_BG_ATTACHMENT_FIXED == color->mBackgroundAttachment) {
|
||||
if (hasBackground && color->HasFixedBackground()) {
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -187,6 +187,14 @@ struct nsStyleBackground : public nsStyleStruct {
|
|||
(NS_STYLE_BG_COLOR_TRANSPARENT | NS_STYLE_BG_IMAGE_NONE)) ==
|
||||
(NS_STYLE_BG_COLOR_TRANSPARENT | NS_STYLE_BG_IMAGE_NONE);
|
||||
}
|
||||
|
||||
PRBool HasFixedBackground() const
|
||||
{
|
||||
// We have to take slower codepaths for fixed background attachment,
|
||||
// but we don't want to do that when there's no image.
|
||||
return mBackgroundAttachment == NS_STYLE_BG_ATTACHMENT_FIXED &&
|
||||
mBackgroundImage;
|
||||
}
|
||||
};
|
||||
|
||||
#define BORDER_COLOR_DEFINED 0x80
|
||||
|
|
|
@ -2490,7 +2490,7 @@ nsBoxFrame::CreateViewForFrame(nsPresContext* aPresContext,
|
|||
}
|
||||
|
||||
// See if the frame has a fixed background attachment
|
||||
if (hasBG && NS_STYLE_BG_ATTACHMENT_FIXED == bg->mBackgroundAttachment) {
|
||||
if (hasBG && bg->HasFixedBackground()) {
|
||||
aForce = PR_TRUE;
|
||||
fixedBackgroundAttachment = PR_TRUE;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче