mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-28 13:21:28 +00:00
Backed out 3 changesets (bug 1061364, bug 1117603) for B2G xpcshell permafail.
Backed out changeset aaf374ba062f (bug 1061364) Backed out changeset 67fece279049 (bug 1117603) Backed out changeset fe8ba59678a2 (bug 1117603) CLOSED TREE
This commit is contained in:
parent
b65df53174
commit
8d602517b5
@ -99,39 +99,23 @@ CommonAnimationManager::RemoveAllElementCollections()
|
||||
}
|
||||
|
||||
void
|
||||
CommonAnimationManager::MaybeStartObservingRefreshDriver()
|
||||
{
|
||||
if (mIsObservingRefreshDriver || !NeedsRefresh()) {
|
||||
return;
|
||||
}
|
||||
|
||||
mPresContext->RefreshDriver()->AddRefreshObserver(this, Flush_Style);
|
||||
mIsObservingRefreshDriver = true;
|
||||
}
|
||||
|
||||
void
|
||||
CommonAnimationManager::MaybeStartOrStopObservingRefreshDriver()
|
||||
{
|
||||
bool needsRefresh = NeedsRefresh();
|
||||
if (needsRefresh && !mIsObservingRefreshDriver) {
|
||||
mPresContext->RefreshDriver()->AddRefreshObserver(this, Flush_Style);
|
||||
} else if (!needsRefresh && mIsObservingRefreshDriver) {
|
||||
mPresContext->RefreshDriver()->RemoveRefreshObserver(this, Flush_Style);
|
||||
}
|
||||
mIsObservingRefreshDriver = needsRefresh;
|
||||
}
|
||||
|
||||
bool
|
||||
CommonAnimationManager::NeedsRefresh() const
|
||||
CommonAnimationManager::CheckNeedsRefresh()
|
||||
{
|
||||
for (PRCList *l = PR_LIST_HEAD(&mElementCollections);
|
||||
l != &mElementCollections;
|
||||
l = PR_NEXT_LINK(l)) {
|
||||
if (static_cast<AnimationPlayerCollection*>(l)->mNeedsRefreshes) {
|
||||
return true;
|
||||
if (!mIsObservingRefreshDriver) {
|
||||
mPresContext->RefreshDriver()->AddRefreshObserver(this, Flush_Style);
|
||||
mIsObservingRefreshDriver = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
if (mIsObservingRefreshDriver) {
|
||||
mIsObservingRefreshDriver = false;
|
||||
mPresContext->RefreshDriver()->RemoveRefreshObserver(this, Flush_Style);
|
||||
}
|
||||
}
|
||||
|
||||
AnimationPlayerCollection*
|
||||
@ -292,7 +276,7 @@ void
|
||||
CommonAnimationManager::NotifyCollectionUpdated(AnimationPlayerCollection&
|
||||
aCollection)
|
||||
{
|
||||
MaybeStartObservingRefreshDriver();
|
||||
CheckNeedsRefresh();
|
||||
mPresContext->ClearLastStyleUpdateForAllAnimations();
|
||||
mPresContext->RestyleManager()->IncrementAnimationGeneration();
|
||||
aCollection.UpdateAnimationGeneration(mPresContext);
|
||||
@ -392,9 +376,21 @@ CommonAnimationManager::GetAnimationRule(mozilla::dom::Element* aElement,
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
collection->EnsureStyleRuleFor(
|
||||
mPresContext->RefreshDriver()->MostRecentRefresh(),
|
||||
EnsureStyleRule_IsNotThrottled);
|
||||
// Animations should already be refreshed, but transitions may not be.
|
||||
// Note that this is temporary, we would like both animations and transitions
|
||||
// to both be refreshed by this point.
|
||||
if (IsAnimationManager()) {
|
||||
NS_WARN_IF_FALSE(!collection->mNeedsRefreshes ||
|
||||
collection->mStyleRuleRefreshTime ==
|
||||
mPresContext->RefreshDriver()->MostRecentRefresh(),
|
||||
"should already have refreshed style rule");
|
||||
} else {
|
||||
// FIXME: Remove this assignment. See bug 1061364.
|
||||
collection->mNeedsRefreshes = true;
|
||||
collection->EnsureStyleRuleFor(
|
||||
mPresContext->RefreshDriver()->MostRecentRefresh(),
|
||||
EnsureStyleRule_IsNotThrottled);
|
||||
}
|
||||
|
||||
return collection->mStyleRule;
|
||||
}
|
||||
@ -744,7 +740,7 @@ AnimationPlayerCollection::EnsureStyleRuleFor(TimeStamp aRefreshTime,
|
||||
}
|
||||
}
|
||||
|
||||
mManager->MaybeStartObservingRefreshDriver();
|
||||
mManager->CheckNeedsRefresh();
|
||||
|
||||
// If one of our animations just started or stopped filling, we need
|
||||
// to notify the transition manager. This does the notification a bit
|
||||
|
@ -131,15 +131,11 @@ protected:
|
||||
friend struct mozilla::AnimationPlayerCollection;
|
||||
|
||||
void AddElementCollection(AnimationPlayerCollection* aCollection);
|
||||
void ElementCollectionRemoved() { MaybeStartOrStopObservingRefreshDriver(); }
|
||||
void ElementCollectionRemoved() { CheckNeedsRefresh(); }
|
||||
void RemoveAllElementCollections();
|
||||
|
||||
// We should normally only call MaybeStartOrStopObservingRefreshDriver in
|
||||
// situations where we will also queue events since otherwise we may stop
|
||||
// getting refresh driver ticks before we queue the necessary events.
|
||||
void MaybeStartObservingRefreshDriver();
|
||||
void MaybeStartOrStopObservingRefreshDriver();
|
||||
bool NeedsRefresh() const;
|
||||
// Check to see if we should stop or start observing the refresh driver
|
||||
void CheckNeedsRefresh();
|
||||
|
||||
virtual nsIAtom* GetAnimationsAtom() = 0;
|
||||
virtual nsIAtom* GetAnimationsBeforeAtom() = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user