gecko/layout
L. David Baron a2f97c232b Bug 978712 - Prevent non-running transitions and animations (animations or transitions during their delay period, and animations after they finish) from repeatedly poking layer activity because we think we can run them on the compositor. r=heycam
This changes the behavior of the CanPerformOnCompositorThread methods of
both ElementAnimations and ElementTransitions to check that the
respective animations or transitions are actually running.  This is ok
because:
 - The main caller is nsLayoutUtils::HasAnimationsForCompositor, and all
   of its callers pretty clearly want the more restricted behavior (they're
   concerned with layer activity)
 - The only other callers of these functions are
   nsAnimationManager::FlushAnimations and
   nsTransitionManager::FlushTransitions (determining when to do
   throttling), nsAnimationManager::GetAnimationsForCompositor (whose
   only caller,
   nsDisplayListBuilder::AddAnimationsAndTransitionsToLayer, also checks
   IsRunningAt).  I think these also all want or are fine with having
   the IsRunningAt check.

As to the actual changes:
 - In the animation manager, I think it's a mistake that
   ElementAnimation::IsRunningAt didn't already check
   mIterationDuration, since we throw out animations with a bad
   iteration-duration in ElementAnimations::EnsureStyleRuleFor.  So this
   makes that change as well.
 - In the transition manager, IsRunningAt already checks
   !IsRemovedSentinel().

I've confirmed in gdb on a device that this fixes the repeated
nsIFrame::SchedulePaint calls that were the symptom of this bug.

I believe this patch also makes it so that a short animation of a
property that can't be animated on the compositor doesn't prevent the
entire duration of the animation of a property that can from being
throttled (having the main thread style updates suppressed).
2014-03-06 22:08:57 -08:00
..
analysis
base Bug 979760 - Pull out a BeginTransaction call common to the start of all three branches of if/else logic. r=mattwoodrow 2014-03-06 22:08:57 -08:00
build Bug 910412 - WebIDL and DOM binding for filesystem API. r=baku, r=smaug, f=dhylands, f=jonas 2014-03-05 11:26:39 +08:00
doc Bug 968029 - Use unprefixed box-sizing in content/, dom/, layout/, and widget/. r=dbaron 2014-02-06 12:32:05 -07:00
forms Bug 971132 - B2G mochitests should use the new manifest format; r=jmaher 2014-03-06 13:42:43 -05:00
generic Bug 979748 - Simplify code based on already having checked the NS_FRAME_OUT_OF_FLOW bit. r=heycam 2014-03-06 22:08:57 -08:00
inspector Backed out changesets d65a803d2b9a, 9456495d6121, and 73c710ddf3d8 (bug 977757) for Gaia UI test failures. 2014-03-06 13:10:20 -05:00
ipc Bug 898563. r=botond 2014-02-21 17:58:30 -05:00
mathml Bug 975935 - nsDisplaymtdBorder needs to override GetBounds. r=bz 2014-03-03 10:37:08 -05:00
media Bug 979816 - Backout bug 977701 because of a Talos regression 2014-03-05 15:18:09 -05:00
printing Bug 975688 part.28 Rename nsDOMEvent to mozilla::dom::Event r=smaug 2014-03-05 09:37:43 +09:00
reftests Bug 974197 - Fire MozAfterPaint after the compositor has composited the frame. r=roc 2014-03-07 16:24:32 +13:00
style Bug 978712 - Prevent non-running transitions and animations (animations or transitions during their delay period, and animations after they finish) from repeatedly poking layer activity because we think we can run them on the compositor. r=heycam 2014-03-06 22:08:57 -08:00
svg Bug 979407 - Fix ASSERTION: viewport height must be nonnegative, with negative markerHeight or markerWidth attribute. r=dholbert 2014-03-05 21:28:12 +00:00
tables Backed out 3 changesets (bug 63895) 2014-03-06 16:59:56 -08:00
tools Bug 977832: Make layout debugger's List() invocation use default "aPrefix" arg, instead of passing "0" (which now gets interpreted as null). r=tn 2014-02-27 15:03:29 -08:00
xul Bug 975688 part.28 Rename nsDOMEvent to mozilla::dom::Event r=smaug 2014-03-05 09:37:43 +09:00
moz.build Bug 975455 - Move more Mochitests to manifests. r=jmaher 2014-02-20 10:14:52 -05:00