Index: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h |
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h |
index 66cdc886167e622381ad39b1fad9a09e65dfa85c..46466cc02c27e0451d243b711ef0f161bdce45bf 100644 |
--- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h |
+++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h |
@@ -8,6 +8,7 @@ |
#include "base/atomicops.h" |
#include "base/macros.h" |
#include "base/synchronization/lock.h" |
+#include "device/base/synchronization/shared_memory_seqlock_buffer.h" |
#include "platform/scheduler/base/pollable_thread_safe_flag.h" |
#include "platform/scheduler/base/queueing_time_estimator.h" |
#include "platform/scheduler/base/thread_load_tracker.h" |
@@ -122,6 +123,7 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl |
void SetTopLevelBlameContext( |
base::trace_event::BlameContext* blame_context) override; |
void SetRAILModeObserver(RAILModeObserver* observer) override; |
+ bool MainThreadSeemsUnresponsive() const override; |
// RenderWidgetSignals::Observer implementation: |
void SetAllRenderWidgetsHidden(bool hidden) override; |
@@ -134,9 +136,10 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl |
const base::PendingTask& task) override; |
// TaskTimeObserver implementation: |
- void ReportTaskTime(TaskQueue* task_queue, |
- double start_time, |
- double end_time) override; |
+ void ReportTaskStartTime(double start_time) override; |
+ void ReportTaskEndTime(TaskQueue* task_queue, |
+ double start_time, |
+ double end_time) override; |
// QueueingTimeEstimator::Client implementation: |
void OnQueueingTimeForWindowEstimated(base::TimeDelta queueing_time) override; |
@@ -368,6 +371,11 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl |
CancelableClosureHolder end_renderer_hidden_idle_period_closure_; |
CancelableClosureHolder suspend_timers_when_backgrounded_closure_; |
+ using SeqLockQueueingTimeEstimator = device::SharedMemorySeqLockBuffer< |
+ QueueingTimeEstimator::SerializedQueueingTimeEstimator>; |
+ |
+ SeqLockQueueingTimeEstimator seqlock_queueing_time_estimator_; |
+ |
// We have decided to improve thread safety at the cost of some boilerplate |
// (the accessors) for the following data members. |
@@ -380,14 +388,15 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl |
TaskCostEstimator loading_task_cost_estimator; |
TaskCostEstimator timer_task_cost_estimator; |
- QueueingTimeEstimator queueing_time_estimator; |
IdleTimeEstimator idle_time_estimator; |
+ QueueingTimeEstimator queueing_time_estimator; |
ThreadLoadTracker background_main_thread_load_tracker; |
ThreadLoadTracker foreground_main_thread_load_tracker; |
UseCase current_use_case; |
Policy current_policy; |
base::TimeTicks current_policy_expiration_time; |
base::TimeTicks estimated_next_frame_begin; |
+ base::TimeTicks current_task_start_time; |
base::TimeDelta compositor_frame_interval; |
base::TimeDelta longest_jank_free_task_duration; |
int timer_queue_suspend_count; // TIMER_TASK_QUEUE suspended if non-zero. |
@@ -414,7 +423,7 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl |
}; |
struct AnyThread { |
- AnyThread(); |
+ AnyThread(RendererSchedulerImpl* renderer_scheduler_impl); |
~AnyThread(); |
base::TimeTicks last_idle_period_end_time; |