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

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

Issue 2846333002: Add a BeginMainFrame fallback to MainThreadEventQueue. (Closed)
Patch Set: Fix tests 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..0e2322d09968a351bfe9f23e98cf716ebfe0ad19 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:
@@ -217,7 +219,8 @@ MainThreadEventQueue::MainThreadEventQueue(
allow_raf_aligned_input &&
base::FeatureList::IsEnabled(features::kRafAlignedMouseInputEvents)),
main_task_runner_(main_task_runner),
- renderer_scheduler_(renderer_scheduler) {
+ renderer_scheduler_(renderer_scheduler),
+ use_raf_fallback_timer_(true) {
if (enable_non_blocking_due_to_main_thread_responsiveness_flag_) {
std::string group = base::FieldTrialList::FindFullName(
"MainThreadResponsivenessScrollIntervention");
@@ -236,6 +239,7 @@ MainThreadEventQueue::MainThreadEventQueue(
base::TimeDelta::FromMilliseconds(threshold_ms);
}
}
+ raf_fallback_timer_.SetTaskRunner(main_task_runner);
}
MainThreadEventQueue::~MainThreadEventQueue() {}
@@ -406,10 +410,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 +540,11 @@ void MainThreadEventQueue::SendInputEventAck(const blink::WebInputEvent& event,
void MainThreadEventQueue::SetNeedsMainFrame() {
if (main_task_runner_->BelongsToCurrentThread()) {
+ if (use_raf_fallback_timer_) {
+ raf_fallback_timer_.Start(
+ FROM_HERE, kMaxRafDelay,
+ base::Bind(&MainThreadEventQueue::RafFallbackTimerFired, this));
+ }
if (client_)
client_->SetNeedsMainFrame();
return;
« no previous file with comments | « content/renderer/input/main_thread_event_queue.h ('k') | content/renderer/input/main_thread_event_queue_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698