Chromium Code Reviews| Index: content/renderer/render_thread_impl.cc |
| diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc |
| index 4a1a1bccc401221de6ccb4183f98ed0b8d45abf9..3842bca15684605283d42e4376996aeb1eb0c7fa 100644 |
| --- a/content/renderer/render_thread_impl.cc |
| +++ b/content/renderer/render_thread_impl.cc |
| @@ -1017,20 +1017,24 @@ void RenderThreadImpl::IdleHandler() { |
| continue_timer = true; |
| } |
| - // Schedule next invocation. |
| + // Schedule next invocation. When the tab is originally hidden, an invocation |
| + // is scheduled for kInitialIdleHandlerDelayMs in |
| + // RenderThreadImpl::WidgetHidden in order to race to a minimal heap. |
| + // After that, idle calls can be much less frequent, so run at a maximum of |
| + // once every kLongIdleHandlerDelayMs. |
| // Dampen the delay using the algorithm (if delay is in seconds): |
| // delay = delay + 1 / (delay + 2) |
| // Using floor(delay) has a dampening effect such as: |
| - // 1s, 1, 1, 2, 2, 2, 2, 3, 3, ... |
| + // 30s, 30, 30, 31, 31, 31, 31, 32, 32, ... |
|
pasko
2014/10/09 09:32:14
with the new formula the series is actually growin
sullivan
2014/10/10 20:55:27
I added a new patch to try and clarify the comment
|
| // If the delay is in milliseconds, the above formula is equivalent to: |
| // delay_ms / 1000 = delay_ms / 1000 + 1 / (delay_ms / 1000 + 2) |
| // which is equivalent to |
| // delay_ms = delay_ms + 1000*1000 / (delay_ms + 2000). |
| - // Note that idle_notification_delay_in_ms_ would be reset to |
| - // kInitialIdleHandlerDelayMs in RenderThreadImpl::WidgetHidden. |
|
pasko
2014/10/09 09:32:14
why deleting this comment?
sullivan
2014/10/10 20:55:27
It was a little misleading, since it's reset to kI
|
| if (continue_timer) { |
| - ScheduleIdleHandler(idle_notification_delay_in_ms_ + |
| - 1000000 / (idle_notification_delay_in_ms_ + 2000)); |
| + ScheduleIdleHandler( |
| + std::max(kLongIdleHandlerDelayMs, |
| + idle_notification_delay_in_ms_ + |
| + 1000000 / (idle_notification_delay_in_ms_ + 2000))); |
| } else { |
| idle_timer_.Stop(); |