| Index: content/renderer/input/main_thread_event_queue.cc
|
| diff --git a/content/renderer/input/main_thread_event_queue.cc b/content/renderer/input/main_thread_event_queue.cc
|
| index 94d1d49ea111c0c446852a4f64f44468014625ba..2d68d9e0717b1a42ea99b7751c069fd118097482 100644
|
| --- a/content/renderer/input/main_thread_event_queue.cc
|
| +++ b/content/renderer/input/main_thread_event_queue.cc
|
| @@ -16,6 +16,8 @@ namespace content {
|
| namespace {
|
|
|
| const size_t kTenSeconds = 10 * 1000 * 1000;
|
| +const base::TimeDelta kMaxRafDelay =
|
| + base::TimeDelta::FromMilliseconds(5 * 1000);
|
|
|
| class QueuedClosure : public MainThreadEventQueueTask {
|
| public:
|
| @@ -406,10 +408,17 @@ static bool IsAsyncTouchMove(
|
| return touch_event.moved_beyond_slop_region && !event->originallyCancelable();
|
| }
|
|
|
| +void MainThreadEventQueue::RafFallbackTimerFired() {
|
| + UMA_HISTOGRAM_BOOLEAN("Event.MainThreadEventQueue.FlushQueueNoBeginMainFrame",
|
| + true);
|
| + DispatchRafAlignedInput(base::TimeTicks::Now());
|
| +}
|
| +
|
| void MainThreadEventQueue::DispatchRafAlignedInput(base::TimeTicks frame_time) {
|
| if (IsRafAlignedInputDisabled())
|
| return;
|
|
|
| + raf_fallback_timer_.Stop();
|
| size_t queue_size_at_start;
|
|
|
| // Record the queue size so that we only process
|
| @@ -529,6 +538,9 @@ void MainThreadEventQueue::SendInputEventAck(const blink::WebInputEvent& event,
|
|
|
| void MainThreadEventQueue::SetNeedsMainFrame() {
|
| if (main_task_runner_->BelongsToCurrentThread()) {
|
| + raf_fallback_timer_.Start(
|
| + FROM_HERE, kMaxRafDelay,
|
| + base::Bind(&MainThreadEventQueue::RafFallbackTimerFired, this));
|
| if (client_)
|
| client_->SetNeedsMainFrame();
|
| return;
|
|
|