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

Side by Side Diff: cc/surfaces/display_scheduler.h

Issue 2411793008: Adds BeginFrameControl via DevTools.
Patch Set: BFC prototype v2 with allow_latency_opts and waiting for BFOs. Created 4 years 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 unified diff | Download patch
« no previous file with comments | « cc/surfaces/display_begin_frame_source.cc ('k') | cc/surfaces/display_scheduler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CC_SURFACES_DISPLAY_SCHEDULER_H_ 5 #ifndef CC_SURFACES_DISPLAY_SCHEDULER_H_
6 #define CC_SURFACES_DISPLAY_SCHEDULER_H_ 6 #define CC_SURFACES_DISPLAY_SCHEDULER_H_
7 7
8 #include <memory> 8 #include <memory>
9 9
10 #include "base/cancelable_callback.h" 10 #include "base/cancelable_callback.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/single_thread_task_runner.h" 13 #include "base/single_thread_task_runner.h"
14 #include "cc/output/renderer_settings.h" 14 #include "cc/output/renderer_settings.h"
15 #include "cc/scheduler/begin_frame_source.h" 15 #include "cc/scheduler/begin_frame_source.h"
16 #include "cc/surfaces/display_begin_frame_source.h"
16 #include "cc/surfaces/surface_id.h" 17 #include "cc/surfaces/surface_id.h"
17 #include "cc/surfaces/surfaces_export.h" 18 #include "cc/surfaces/surfaces_export.h"
18 19
19 namespace cc { 20 namespace cc {
20 21
21 class OutputSurface; 22 class OutputSurface;
22 class BeginFrameSource;
23 23
24 class CC_SURFACES_EXPORT DisplaySchedulerClient { 24 class CC_SURFACES_EXPORT DisplaySchedulerClient {
25 public: 25 public:
26 virtual ~DisplaySchedulerClient() {} 26 virtual ~DisplaySchedulerClient() {}
27 27
28 virtual bool DrawAndSwap() = 0; 28 virtual bool DrawAndSwap() = 0;
29 }; 29 };
30 30
31 class CC_SURFACES_EXPORT DisplayScheduler : public BeginFrameObserverBase { 31 class CC_SURFACES_EXPORT DisplayScheduler
32 : public BeginFrameObserverBase,
33 public DisplayBeginFrameSourceClient {
32 public: 34 public:
33 DisplayScheduler(BeginFrameSource* begin_frame_source, 35 DisplayScheduler(base::SingleThreadTaskRunner* task_runner,
34 base::SingleThreadTaskRunner* task_runner,
35 int max_pending_swaps); 36 int max_pending_swaps);
36 ~DisplayScheduler() override; 37 ~DisplayScheduler() override;
37 38
38 void SetClient(DisplaySchedulerClient* client); 39 void SetClient(DisplaySchedulerClient* client);
40 void SetBeginFrameSource(DisplayBeginFrameSource* begin_frame_source);
39 41
40 void SetVisible(bool visible); 42 void SetVisible(bool visible);
41 void SetRootSurfaceResourcesLocked(bool locked); 43 void SetRootSurfaceResourcesLocked(bool locked);
42 void ForceImmediateSwapIfPossible(); 44 void ForceImmediateSwapIfPossible();
43 virtual void DisplayResized(); 45 virtual void DisplayResized();
44 virtual void SetNewRootSurface(const SurfaceId& root_surface_id); 46 virtual void SetNewRootSurface(const SurfaceId& root_surface_id);
45 virtual void SurfaceDamaged(const SurfaceId& surface_id); 47 virtual void SurfaceDamaged(const SurfaceId& surface_id);
46 48
47 virtual void DidSwapBuffers(); 49 virtual void DidSwapBuffers();
48 void DidReceiveSwapBuffersAck(); 50 void DidReceiveSwapBuffersAck();
49 51
50 void OutputSurfaceLost(); 52 void OutputSurfaceLost();
51 53
52 // BeginFrameObserverBase implementation 54 // BeginFrameObserverBase implementation.
53 bool OnBeginFrameDerivedImpl(const BeginFrameArgs& args) override; 55 bool OnBeginFrameDerivedImpl(const BeginFrameArgs& args) override;
54 void OnBeginFrameSourcePausedChanged(bool paused) override; 56 void OnBeginFrameSourcePausedChanged(bool paused) override;
55 57
58 // DisplayBeginFrameSourceClient implementation.
59 void ObserverStatusChanged() override;
60 void BeginFrameSourceSwapping(BeginFrameSource* new_source) override;
61
56 protected: 62 protected:
57 base::TimeTicks DesiredBeginFrameDeadlineTime(); 63 base::TimeTicks DesiredBeginFrameDeadlineTime();
58 virtual void ScheduleBeginFrameDeadline(); 64 virtual void ScheduleBeginFrameDeadline();
59 void AttemptDrawAndSwap(); 65 void AttemptDrawAndSwap();
60 void OnBeginFrameDeadline(); 66 void OnBeginFrameDeadline();
61 void DrawAndSwap(); 67 void DrawAndSwap();
62 void StartObservingBeginFrames(); 68 void StartObservingBeginFrames();
63 void StopObservingBeginFrames(); 69 void StopObservingBeginFrames();
64 bool ShouldDraw(); 70 bool ShouldDraw();
71 bool BeginFrameForcesDamage() const;
65 72
66 DisplaySchedulerClient* client_; 73 DisplaySchedulerClient* client_;
67 BeginFrameSource* begin_frame_source_; 74 DisplayBeginFrameSource* begin_frame_source_;
68 base::SingleThreadTaskRunner* task_runner_; 75 base::SingleThreadTaskRunner* task_runner_;
69 76
70 BeginFrameArgs current_begin_frame_args_; 77 BeginFrameArgs current_begin_frame_args_;
71 base::Closure begin_frame_deadline_closure_; 78 base::Closure begin_frame_deadline_closure_;
72 base::CancelableClosure begin_frame_deadline_task_; 79 base::CancelableClosure begin_frame_deadline_task_;
73 base::TimeTicks begin_frame_deadline_task_time_; 80 base::TimeTicks begin_frame_deadline_task_time_;
74 81
75 base::CancelableClosure missed_begin_frame_task_; 82 base::CancelableClosure missed_begin_frame_task_;
76 bool inside_surface_damaged_; 83 bool inside_surface_damaged_;
77 84
(...skipping 21 matching lines...) Expand all
99 106
100 base::WeakPtrFactory<DisplayScheduler> weak_ptr_factory_; 107 base::WeakPtrFactory<DisplayScheduler> weak_ptr_factory_;
101 108
102 private: 109 private:
103 DISALLOW_COPY_AND_ASSIGN(DisplayScheduler); 110 DISALLOW_COPY_AND_ASSIGN(DisplayScheduler);
104 }; 111 };
105 112
106 } // namespace cc 113 } // namespace cc
107 114
108 #endif // CC_SURFACES_DISPLAY_SCHEDULER_H_ 115 #endif // CC_SURFACES_DISPLAY_SCHEDULER_H_
OLDNEW
« no previous file with comments | « cc/surfaces/display_begin_frame_source.cc ('k') | cc/surfaces/display_scheduler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698