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

Unified Diff: cc/scheduler/begin_frame_source.h

Issue 2150533004: cc: Send all begin frames using a PostTask. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scheduler_unittest_no_deadline
Patch Set: Created 4 years, 5 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
« no previous file with comments | « no previous file | cc/scheduler/begin_frame_source.cc » ('j') | cc/scheduler/begin_frame_source.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/scheduler/begin_frame_source.h
diff --git a/cc/scheduler/begin_frame_source.h b/cc/scheduler/begin_frame_source.h
index 0a8a51f08d7c911d6c1594b1623ae74ad5a9fe43..114727028cf6f9b2e2aee5abd7790db1e439b2f6 100644
--- a/cc/scheduler/begin_frame_source.h
+++ b/cc/scheduler/begin_frame_source.h
@@ -136,11 +136,13 @@ class CC_EXPORT SyntheticBeginFrameSource : public BeginFrameSource {
// A frame source which calls BeginFrame (at the next possible time) as soon as
// remaining frames reaches zero.
-class CC_EXPORT BackToBackBeginFrameSource : public SyntheticBeginFrameSource,
- public DelayBasedTimeSourceClient {
+class CC_EXPORT BackToBackBeginFrameSource : public SyntheticBeginFrameSource {
public:
explicit BackToBackBeginFrameSource(
- std::unique_ptr<DelayBasedTimeSource> time_source);
+ base::SingleThreadTaskRunner* task_runner);
+ // For testing.
danakj 2016/07/13 21:00:59 Can we avoid reintroducing for-testing constructor
+ BackToBackBeginFrameSource(base::SingleThreadTaskRunner* task_runner,
+ base::TickClock* clock);
~BackToBackBeginFrameSource() override;
// BeginFrameSource implementation.
@@ -154,13 +156,14 @@ class CC_EXPORT BackToBackBeginFrameSource : public SyntheticBeginFrameSource,
base::TimeDelta interval) override {}
void SetAuthoritativeVSyncInterval(base::TimeDelta interval) override {}
- // DelayBasedTimeSourceClient implementation.
- void OnTimerTick() override;
-
private:
- std::unique_ptr<DelayBasedTimeSource> time_source_;
+ void SendBeginFrame();
+
+ base::SingleThreadTaskRunner* task_runner_;
+ base::TickClock* clock_;
+ base::CancelableClosure begin_frame_callback_;
std::unordered_set<BeginFrameObserver*> observers_;
- std::unordered_set<BeginFrameObserver*> pending_begin_frame_observers_;
+ std::unordered_set<BeginFrameObserver*> pending_observers_;
base::WeakPtrFactory<BackToBackBeginFrameSource> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(BackToBackBeginFrameSource);
@@ -172,7 +175,10 @@ class CC_EXPORT DelayBasedBeginFrameSource : public SyntheticBeginFrameSource,
public DelayBasedTimeSourceClient {
public:
explicit DelayBasedBeginFrameSource(
- std::unique_ptr<DelayBasedTimeSource> time_source);
+ base::SingleThreadTaskRunner* task_runner);
+ // For testing.
+ DelayBasedBeginFrameSource(base::SingleThreadTaskRunner* task_runner,
+ base::TickClock* clock);
~DelayBasedBeginFrameSource() override;
// BeginFrameSource implementation.
@@ -192,11 +198,16 @@ class CC_EXPORT DelayBasedBeginFrameSource : public SyntheticBeginFrameSource,
private:
BeginFrameArgs CreateBeginFrameArgs(base::TimeTicks frame_time,
BeginFrameArgs::BeginFrameArgsType type);
+ void SendMissedBeginFrame();
std::unique_ptr<DelayBasedTimeSource> time_source_;
+ base::SingleThreadTaskRunner* task_runner_;
+ base::CancelableClosure missed_frame_callback_;
std::unordered_set<BeginFrameObserver*> observers_;
+ std::unordered_set<BeginFrameObserver*> missed_frame_observers_;
base::TimeTicks last_timebase_;
base::TimeDelta authoritative_interval_;
+ base::WeakPtrFactory<DelayBasedBeginFrameSource> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(DelayBasedBeginFrameSource);
};
« no previous file with comments | « no previous file | cc/scheduler/begin_frame_source.cc » ('j') | cc/scheduler/begin_frame_source.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698