Bug 1374882 - Add a TimingParams ctor on the compositor. r?birtles draft
authorHiroyuki Ikezoe <hikezoe@mozilla.com>
Thu, 22 Jun 2017 12:12:42 +0900
changeset 598706 5fb6f09b605cbaeb4d6610f47ba62b1698973a65
parent 598705 d7d0f17206f6483fd01ad42424f743597a14dd15
child 598707 a0a63ce1a4e63d452bb503436444eede97a9c2ab
push id65289
push userhikezoe@mozilla.com
push dateThu, 22 Jun 2017 03:12:57 +0000
reviewersbirtles
bugs1374882
milestone56.0a1
Bug 1374882 - Add a TimingParams ctor on the compositor. r?birtles MozReview-Commit-ID: BFiwrphRND0
dom/animation/TimingParams.h
gfx/layers/AnimationHelper.cpp
--- 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;