зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1371787 P2 Don't adjust Timeout::When() values in TimeoutManager::Resume(). r=ehsan
This commit is contained in:
Родитель
f4263c76a4
Коммит
36f2e5562d
|
@ -981,28 +981,10 @@ TimeoutManager::Resume()
|
||||||
MaybeStartThrottleTrackingTimout();
|
MaybeStartThrottleTrackingTimout();
|
||||||
}
|
}
|
||||||
|
|
||||||
TimeStamp now = TimeStamp::Now();
|
OrderedTimeoutIterator iter(mNormalTimeouts, mTrackingTimeouts);
|
||||||
TimeStamp nextWakeUp;
|
Timeout* nextTimeout = iter.Next();
|
||||||
|
if (nextTimeout) {
|
||||||
ForEachUnorderedTimeout([&](Timeout* aTimeout) {
|
MOZ_ALWAYS_SUCCEEDS(mExecutor->MaybeSchedule(nextTimeout->When(),
|
||||||
// The timeout When() is set to the absolute time when the timer should
|
|
||||||
// fire. Recalculate the delay from now until that deadline. If the
|
|
||||||
// the deadline has already passed or falls within our minimum delay
|
|
||||||
// deadline, then clamp the resulting value to the minimum delay.
|
|
||||||
int32_t remaining = 0;
|
|
||||||
if (aTimeout->When() > now) {
|
|
||||||
remaining = static_cast<int32_t>((aTimeout->When() - now).ToMilliseconds());
|
|
||||||
}
|
|
||||||
uint32_t delay = std::max(remaining, DOMMinTimeoutValue(aTimeout->mIsTracking));
|
|
||||||
aTimeout->SetWhenOrTimeRemaining(now, TimeDuration::FromMilliseconds(delay));
|
|
||||||
|
|
||||||
if (nextWakeUp.IsNull() || aTimeout->When() < nextWakeUp) {
|
|
||||||
nextWakeUp = aTimeout->When();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!nextWakeUp.IsNull()) {
|
|
||||||
MOZ_ALWAYS_SUCCEEDS(mExecutor->MaybeSchedule(nextWakeUp,
|
|
||||||
MinSchedulingDelay()));
|
MinSchedulingDelay()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче