Bug 1374882 - Add a TimingParams ctor on the compositor. r?birtles
MozReview-Commit-ID: BFiwrphRND0
--- a/dom/animation/TimingParams.h
+++ b/dom/animation/TimingParams.h
@@ -42,16 +42,35 @@ struct TimingParams
: mIterations(aIterationCount)
, mDirection(aDirection)
, mFill(aFillMode)
{
mDuration.emplace(StickyTimeDuration::FromMilliseconds(aDuration));
mDelay = TimeDuration::FromMilliseconds(aDelay);
}
+ TimingParams(const TimeDuration& aDuration,
+ const TimeDuration& aDelay,
+ const TimeDuration& aEndDelay,
+ float aIterations,
+ float aIterationStart,
+ dom::PlaybackDirection aDirection,
+ dom::FillMode aFillMode,
+ Maybe<ComputedTimingFunction>&& aFunction)
+ : mDelay(aDelay)
+ , mEndDelay(aEndDelay)
+ , mIterations(aIterations)
+ , mIterationStart(aIterationStart)
+ , mDirection(aDirection)
+ , mFill(aFillMode)
+ , mFunction(aFunction)
+ {
+ mDuration.emplace(aDuration);
+ }
+
template <class OptionsType>
static TimingParams FromOptionsType(
const OptionsType& aOptions,
nsIDocument* aDocument,
ErrorResult& aRv);
static TimingParams FromOptionsUnion(
const dom::UnrestrictedDoubleOrKeyframeEffectOptions& aOptions,
nsIDocument* aDocument, ErrorResult& aRv);
--- a/gfx/layers/AnimationHelper.cpp
+++ b/gfx/layers/AnimationHelper.cpp
@@ -183,28 +183,27 @@ AnimationHelper::SampleAnimationForEachN
// finished, then use the hold time to stay at the same position.
TimeDuration elapsedDuration =
animation.isNotPlaying() ||
animation.startTime().type() != MaybeTimeDuration::TTimeDuration
? animation.holdTime()
: (aTime - animation.originTime() -
animation.startTime().get_TimeDuration())
.MultDouble(animation.playbackRate());
- TimingParams timing;
- timing.mDuration.emplace(animation.duration());
- timing.mDelay = animation.delay();
- timing.mEndDelay = animation.endDelay();
- timing.mIterations = animation.iterations();
- timing.mIterationStart = animation.iterationStart();
- timing.mDirection =
- static_cast<dom::PlaybackDirection>(animation.direction());
- timing.mFill = static_cast<dom::FillMode>(animation.fillMode());
- timing.mFunction =
- AnimationUtils::TimingFunctionToComputedTimingFunction(
- animation.easingFunction());
+ TimingParams timing {
+ animation.duration(),
+ animation.delay(),
+ animation.endDelay(),
+ animation.iterations(),
+ animation.iterationStart(),
+ static_cast<dom::PlaybackDirection>(animation.direction()),
+ static_cast<dom::FillMode>(animation.fillMode()),
+ Move(AnimationUtils::TimingFunctionToComputedTimingFunction(
+ animation.easingFunction()))
+ };
ComputedTiming computedTiming =
dom::AnimationEffectReadOnly::GetComputedTimingAt(
Nullable<TimeDuration>(elapsedDuration), timing,
animation.playbackRate());
if (computedTiming.mProgress.IsNull()) {
continue;