зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1230056 part 2 - Remove nsLayoutUtils::HasAnimationsForCompositor and call EffectCompositor::HasAnimationsForCompositor directly; r=dholbert
This commit is contained in:
Родитель
c70be15294
Коммит
885593747b
|
@ -35,6 +35,7 @@
|
|||
#include "nsSVGIntegrationUtils.h"
|
||||
#include "mozilla/LayerTimelineMarker.h"
|
||||
|
||||
#include "mozilla/EffectCompositor.h"
|
||||
#include "mozilla/Move.h"
|
||||
#include "mozilla/ReverseIterator.h"
|
||||
#include "mozilla/gfx/2D.h"
|
||||
|
@ -5107,7 +5108,7 @@ ChooseScaleAndSetTransform(FrameLayerBuilder* aLayerBuilder,
|
|||
// for animation
|
||||
if (aContainerItem &&
|
||||
aContainerItem->GetType() == nsDisplayItem::TYPE_TRANSFORM &&
|
||||
nsLayoutUtils::HasAnimationsForCompositor(
|
||||
EffectCompositor::HasAnimationsForCompositor(
|
||||
aContainerFrame, eCSSProperty_transform)) {
|
||||
// Use the size of the nearest widget as the maximum size. This
|
||||
// is important since it might be a popup that is bigger than the
|
||||
|
|
|
@ -780,7 +780,8 @@ void nsDisplayListBuilder::MarkOutOfFlowFrameForDisplay(nsIFrame* aDirtyFrame,
|
|||
nsRect overflowRect = aFrame->GetVisualOverflowRect();
|
||||
|
||||
if (aFrame->IsTransformed() &&
|
||||
nsLayoutUtils::HasAnimationsForCompositor(aFrame, eCSSProperty_transform)) {
|
||||
EffectCompositor::HasAnimationsForCompositor(aFrame,
|
||||
eCSSProperty_transform)) {
|
||||
/**
|
||||
* Add a fuzz factor to the overflow rectangle so that elements only just
|
||||
* out of view are pulled into the display list, so they can be
|
||||
|
@ -4076,7 +4077,8 @@ nsDisplayOpacity::NeedsActiveLayer(nsDisplayListBuilder* aBuilder)
|
|||
if (ActiveLayerTracker::IsStyleAnimated(aBuilder, mFrame, eCSSProperty_opacity) &&
|
||||
!IsItemTooSmallForActiveLayer(this))
|
||||
return true;
|
||||
if (nsLayoutUtils::HasAnimationsForCompositor(mFrame, eCSSProperty_opacity)) {
|
||||
if (EffectCompositor::HasAnimationsForCompositor(mFrame,
|
||||
eCSSProperty_opacity)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -5434,7 +5436,8 @@ nsDisplayTransform::ShouldPrerenderTransformedContent(nsDisplayListBuilder* aBui
|
|||
// might have only just had its transform animated in which case
|
||||
// the ActiveLayerManager may not have been notified yet.
|
||||
if (!ActiveLayerTracker::IsStyleMaybeAnimated(aFrame, eCSSProperty_transform) &&
|
||||
!nsLayoutUtils::HasAnimationsForCompositor(aFrame, eCSSProperty_transform)) {
|
||||
!EffectCompositor::HasAnimationsForCompositor(aFrame,
|
||||
eCSSProperty_transform)) {
|
||||
if (aLogAnimations) {
|
||||
nsCString message;
|
||||
message.AppendLiteral("Performance warning: Async animation disabled because frame was not marked active for transform animation");
|
||||
|
@ -5634,7 +5637,8 @@ nsDisplayTransform::GetLayerState(nsDisplayListBuilder* aBuilder,
|
|||
if (ActiveLayerTracker::IsStyleAnimated(aBuilder, mFrame, eCSSProperty_transform) &&
|
||||
!IsItemTooSmallForActiveLayer(this))
|
||||
return LAYER_ACTIVE;
|
||||
if (nsLayoutUtils::HasAnimationsForCompositor(mFrame, eCSSProperty_transform)) {
|
||||
if (EffectCompositor::HasAnimationsForCompositor(mFrame,
|
||||
eCSSProperty_transform)) {
|
||||
return LAYER_ACTIVE;
|
||||
}
|
||||
|
||||
|
|
|
@ -370,13 +370,6 @@ FloatLogicalValuesEnabledPrefChangeCallback(const char* aPrefName,
|
|||
isFloatLogicalValuesEnabled ? eCSSKeyword_inline_end : eCSSKeyword_UNKNOWN;
|
||||
}
|
||||
|
||||
bool
|
||||
nsLayoutUtils::HasAnimationsForCompositor(const nsIFrame* aFrame,
|
||||
nsCSSProperty aProperty)
|
||||
{
|
||||
return !EffectCompositor::HasAnimationsForCompositor(aFrame, aProperty);
|
||||
}
|
||||
|
||||
template<typename TestType>
|
||||
static bool
|
||||
HasMatchingCurrentAnimations(const nsIFrame* aFrame, TestType&& aTest)
|
||||
|
|
|
@ -2208,13 +2208,6 @@ public:
|
|||
nsIContent* &aContentResult,
|
||||
nsCSSPseudoElements::Type &aPseudoTypeResult);
|
||||
|
||||
/**
|
||||
* Returns true if the frame has animations or transitions that can be
|
||||
* performed on the compositor.
|
||||
*/
|
||||
static bool HasAnimationsForCompositor(const nsIFrame* aFrame,
|
||||
nsCSSProperty aProperty);
|
||||
|
||||
/**
|
||||
* Returns true if the frame has current (i.e. running or scheduled-to-run)
|
||||
* animations or transitions for the property.
|
||||
|
|
|
@ -87,6 +87,7 @@
|
|||
#include "nsIFrameInlines.h"
|
||||
|
||||
#include "mozilla/AsyncEventDispatcher.h"
|
||||
#include "mozilla/EffectCompositor.h"
|
||||
#include "mozilla/EventListenerManager.h"
|
||||
#include "mozilla/EventStateManager.h"
|
||||
#include "mozilla/EventStates.h"
|
||||
|
@ -1083,8 +1084,8 @@ nsIFrame::IsTransformed() const
|
|||
(StyleDisplay()->HasTransform(this) ||
|
||||
IsSVGTransformed() ||
|
||||
(mContent &&
|
||||
nsLayoutUtils::HasAnimationsForCompositor(this,
|
||||
eCSSProperty_transform) &&
|
||||
EffectCompositor::HasAnimationsForCompositor(
|
||||
this, eCSSProperty_transform) &&
|
||||
IsFrameOfType(eSupportsCSSTransforms) &&
|
||||
mContent->GetPrimaryFrame() == this)));
|
||||
}
|
||||
|
@ -1097,8 +1098,8 @@ nsIFrame::HasOpacityInternal(float aThreshold) const
|
|||
return StyleDisplay()->mOpacity < aThreshold ||
|
||||
(displayStyle->mWillChangeBitField & NS_STYLE_WILL_CHANGE_OPACITY) ||
|
||||
(mContent &&
|
||||
nsLayoutUtils::HasAnimationsForCompositor(this,
|
||||
eCSSProperty_opacity) &&
|
||||
EffectCompositor::HasAnimationsForCompositor(
|
||||
this, eCSSProperty_opacity) &&
|
||||
mContent->GetPrimaryFrame() == this);
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче