mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 05:37:11 +00:00
import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 1147491, part 1 - Fix playbackRate crash due to integer rounding causing divide-by-zero. r=dholbert (7726fc9ce) - Bug 1147491, part 2 - Disable use of BaseTimeDuration::operator/ with floating point values. r=ehsan (073909011) - Bug 1147491 - Partially backout part 2 while figuring out B2G orange. r=orange CLOSED TREE (b37b02f50) - Bug 1147491, part 2 - Disable use of BaseTimeDuration::operator/ with floating point values. r=ehsan (ca7cffb4d)
This commit is contained in:
@@ -107,7 +107,7 @@ AnimationPlayer::SilentlySetCurrentTime(const TimeDuration& aSeekTime)
|
||||
}
|
||||
} else {
|
||||
mStartTime.SetValue(mTimeline->GetCurrentTime().Value() -
|
||||
(aSeekTime / mPlaybackRate));
|
||||
(aSeekTime.MultDouble(1 / mPlaybackRate)));
|
||||
}
|
||||
|
||||
mPreviousCurrentTime.SetNull();
|
||||
@@ -604,7 +604,8 @@ AnimationPlayer::ResumeAt(const TimeDuration& aReadyTime)
|
||||
// we should use. In all other cases, we resolve it from the ready time.
|
||||
if (mStartTime.IsNull()) {
|
||||
if (mPlaybackRate != 0) {
|
||||
mStartTime.SetValue(aReadyTime - (mHoldTime.Value() / mPlaybackRate));
|
||||
mStartTime.SetValue(aReadyTime -
|
||||
(mHoldTime.Value().MultDouble(1 / mPlaybackRate)));
|
||||
mHoldTime.SetNull();
|
||||
} else {
|
||||
mStartTime.SetValue(aReadyTime);
|
||||
@@ -679,7 +680,7 @@ AnimationPlayer::UpdateFinishedState(bool aSeekFlag)
|
||||
!currentTime.IsNull()) {
|
||||
if (aSeekFlag && !mHoldTime.IsNull()) {
|
||||
mStartTime.SetValue(mTimeline->GetCurrentTime().Value() -
|
||||
(mHoldTime.Value() / mPlaybackRate));
|
||||
(mHoldTime.Value().MultDouble(1 / mPlaybackRate)));
|
||||
}
|
||||
mHoldTime.SetNull();
|
||||
}
|
||||
|
||||
+1
-1
@@ -86,7 +86,7 @@ public:
|
||||
T mean()
|
||||
{
|
||||
MOZ_ASSERT(!empty());
|
||||
return T(mTotal / mValues.length());
|
||||
return T(mTotal / int64_t(mValues.length()));
|
||||
}
|
||||
|
||||
bool empty()
|
||||
|
||||
@@ -271,7 +271,7 @@ GoannaTouchDispatcher::ResampleTouchMoves(MultiTouchInput& aOutTouch, TimeStamp
|
||||
TimeDuration touchDiff = currentTouch.mTimeStamp - baseTouch.mTimeStamp;
|
||||
|
||||
if (currentTouch.mTimeStamp < sampleTime) {
|
||||
TimeDuration maxResampleTime = std::min(touchDiff / 2, mMaxPredict);
|
||||
TimeDuration maxResampleTime = std::min(touchDiff / int64_t(2), mMaxPredict);
|
||||
TimeStamp maxTimestamp = currentTouch.mTimeStamp + maxResampleTime;
|
||||
if (sampleTime > maxTimestamp) {
|
||||
sampleTime = maxTimestamp;
|
||||
|
||||
@@ -181,6 +181,11 @@ private:
|
||||
// If required, use MultDouble explicitly and with care.
|
||||
BaseTimeDuration operator*(const double aMultiplier) const = delete;
|
||||
|
||||
// Block double divisor (for the same reason, and because dividing by
|
||||
// fractional values would otherwise invoke the int64_t variant, and rounding
|
||||
// the passed argument can then cause divide-by-zero) - Bug 1147491.
|
||||
BaseTimeDuration operator/(const double aDivisor) const = delete;
|
||||
|
||||
public:
|
||||
BaseTimeDuration MultDouble(double aMultiplier) const
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user