Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2318)

Unified Diff: content/renderer/input/main_thread_event_queue.cc

Issue 2846333002: Add a BeginMainFrame fallback to MainThreadEventQueue. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698