Bug 948531 - Layerize elements with transition or animation immediately. r=mattwoodrow

--HG--
extra : rebase_source : 06725514680d5041c547149f6ecd758061936a4e
This commit is contained in:
Benoit Girard 2013-12-11 15:48:06 -05:00
parent ab594184a1
commit c8d365b1cc
3 changed files with 33 additions and 2 deletions

View File

@ -10,6 +10,8 @@
#include "nsRefreshDriver.h"
#include "nsPIDOMWindow.h"
#include "nsIDocument.h"
#include "nsAnimationManager.h"
#include "nsTransitionManager.h"
namespace mozilla {
@ -215,6 +217,18 @@ ActiveLayerTracker::IsStyleAnimated(nsIFrame* aFrame, nsCSSProperty aProperty)
if (aProperty == eCSSProperty_transform && aFrame->Preserves3D()) {
return IsStyleAnimated(aFrame->GetParent(), aProperty);
}
nsIContent* content = aFrame->GetContent();
if (content) {
if (mozilla::HasAnimationOrTransition<ElementAnimations>(
content, nsGkAtoms::animationsProperty, aProperty)) {
return true;
}
if (mozilla::HasAnimationOrTransition<ElementTransitions>(
content, nsGkAtoms::transitionsProperty, aProperty)) {
return true;
}
}
return false;
}

View File

@ -230,8 +230,8 @@ nsLayoutUtils::HasAnimationsForCompositor(nsIContent* aContent,
}
template <class AnimationsOrTransitions>
static AnimationsOrTransitions*
HasAnimationOrTransition(nsIContent* aContent,
AnimationsOrTransitions*
mozilla::HasAnimationOrTransition(nsIContent* aContent,
nsIAtom* aAnimationProperty,
nsCSSProperty aProperty)
{
@ -247,6 +247,17 @@ HasAnimationOrTransition(nsIContent* aContent,
return nullptr;
}
template ElementAnimations*
mozilla::HasAnimationOrTransition<ElementAnimations>(nsIContent* aContent,
nsIAtom* aAnimationProperty,
nsCSSProperty aProperty);
template ElementTransitions*
mozilla::HasAnimationOrTransition<ElementTransitions>(nsIContent* aContent,
nsIAtom* aAnimationProperty,
nsCSSProperty aProperty);
bool
nsLayoutUtils::HasAnimations(nsIContent* aContent,
nsCSSProperty aProperty)

View File

@ -70,6 +70,12 @@ class HTMLVideoElement;
namespace layers {
class Layer;
}
template <class AnimationsOrTransitions>
extern AnimationsOrTransitions* HasAnimationOrTransition(nsIContent* aContent,
nsIAtom* aAnimationProperty,
nsCSSProperty aProperty);
} // namespace mozilla
/**