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

Side by Side Diff: cc/CCScheduler.cpp

Issue 10907075: Roll cc snapshot up to 127605 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/CCScheduler.h ('k') | cc/CCSchedulerStateMachine.h » ('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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 #include "config.h" 5 #include "config.h"
6 6
7 #include "CCScheduler.h" 7 #include "CCScheduler.h"
8 8
9 #include "TraceEvent.h" 9 #include "TraceEvent.h"
10 10
(...skipping 19 matching lines...) Expand all
30 m_stateMachine.setCanBeginFrame(can); 30 m_stateMachine.setCanBeginFrame(can);
31 processScheduledActions(); 31 processScheduledActions();
32 } 32 }
33 33
34 void CCScheduler::setVisible(bool visible) 34 void CCScheduler::setVisible(bool visible)
35 { 35 {
36 m_stateMachine.setVisible(visible); 36 m_stateMachine.setVisible(visible);
37 processScheduledActions(); 37 processScheduledActions();
38 } 38 }
39 39
40 void CCScheduler::setCanDraw(bool canDraw)
41 {
42 m_stateMachine.setCanDraw(canDraw);
43
44 // Defer processScheduleActions so we don't recurse and commit/draw
45 // multiple frames. We can call processScheduledActions directly
46 // once it is no longer re-entrant.
47 m_frameRateController->setActive(m_stateMachine.vsyncCallbackNeeded());
48 }
49
40 void CCScheduler::setNeedsCommit() 50 void CCScheduler::setNeedsCommit()
41 { 51 {
42 m_stateMachine.setNeedsCommit(); 52 m_stateMachine.setNeedsCommit();
43 processScheduledActions(); 53 processScheduledActions();
44 } 54 }
45 55
46 void CCScheduler::setNeedsForcedCommit() 56 void CCScheduler::setNeedsForcedCommit()
47 { 57 {
48 m_stateMachine.setNeedsForcedCommit(); 58 m_stateMachine.setNeedsForcedCommit();
49 processScheduledActions(); 59 processScheduledActions();
(...skipping 29 matching lines...) Expand all
79 TRACE_EVENT0("cc", "CCScheduler::beginFrameAborted"); 89 TRACE_EVENT0("cc", "CCScheduler::beginFrameAborted");
80 m_stateMachine.beginFrameAborted(); 90 m_stateMachine.beginFrameAborted();
81 processScheduledActions(); 91 processScheduledActions();
82 } 92 }
83 93
84 void CCScheduler::setMaxFramesPending(int maxFramesPending) 94 void CCScheduler::setMaxFramesPending(int maxFramesPending)
85 { 95 {
86 m_frameRateController->setMaxFramesPending(maxFramesPending); 96 m_frameRateController->setMaxFramesPending(maxFramesPending);
87 } 97 }
88 98
99 void CCScheduler::setSwapBuffersCompleteSupported(bool supported)
100 {
101 m_frameRateController->setSwapBuffersCompleteSupported(supported);
102 }
103
89 void CCScheduler::didSwapBuffersComplete() 104 void CCScheduler::didSwapBuffersComplete()
90 { 105 {
91 TRACE_EVENT0("cc", "CCScheduler::didSwapBuffersComplete"); 106 TRACE_EVENT0("cc", "CCScheduler::didSwapBuffersComplete");
92 m_frameRateController->didFinishFrame(); 107 m_frameRateController->didFinishFrame();
93 } 108 }
94 109
95 void CCScheduler::didLoseContext() 110 void CCScheduler::didLoseContext()
96 { 111 {
97 TRACE_EVENT0("cc", "CCScheduler::didLoseContext"); 112 TRACE_EVENT0("cc", "CCScheduler::didLoseContext");
98 m_frameRateController->didAbortAllPendingFrames(); 113 m_frameRateController->didAbortAllPendingFrames();
(...skipping 19 matching lines...) Expand all
118 m_updateMoreResourcesPending = false; 133 m_updateMoreResourcesPending = false;
119 m_stateMachine.beginUpdateMoreResourcesComplete(m_client->hasMoreResourc eUpdates()); 134 m_stateMachine.beginUpdateMoreResourcesComplete(m_client->hasMoreResourc eUpdates());
120 } 135 }
121 TRACE_EVENT0("cc", "CCScheduler::vsyncTick"); 136 TRACE_EVENT0("cc", "CCScheduler::vsyncTick");
122 137
123 m_stateMachine.didEnterVSync(); 138 m_stateMachine.didEnterVSync();
124 processScheduledActions(); 139 processScheduledActions();
125 m_stateMachine.didLeaveVSync(); 140 m_stateMachine.didLeaveVSync();
126 } 141 }
127 142
128 CCSchedulerStateMachine::Action CCScheduler::nextAction()
129 {
130 m_stateMachine.setCanDraw(m_client->canDraw());
131 return m_stateMachine.nextAction();
132 }
133
134 void CCScheduler::processScheduledActions() 143 void CCScheduler::processScheduledActions()
135 { 144 {
136 // Early out so we don't spam TRACE_EVENTS with useless processScheduledActi ons. 145 // Early out so we don't spam TRACE_EVENTS with useless processScheduledActi ons.
137 if (nextAction() == CCSchedulerStateMachine::ACTION_NONE) { 146 if (m_stateMachine.nextAction() == CCSchedulerStateMachine::ACTION_NONE) {
138 m_frameRateController->setActive(m_stateMachine.vsyncCallbackNeeded()); 147 m_frameRateController->setActive(m_stateMachine.vsyncCallbackNeeded());
139 return; 148 return;
140 } 149 }
141 150
142 // This function can re-enter itself. For example, draw may call 151 // This function can re-enter itself. For example, draw may call
143 // setNeedsCommit. Proceeed with caution. 152 // setNeedsCommit. Proceeed with caution.
144 CCSchedulerStateMachine::Action action; 153 CCSchedulerStateMachine::Action action;
145 do { 154 do {
146 action = nextAction(); 155 action = m_stateMachine.nextAction();
147 m_stateMachine.updateState(action); 156 m_stateMachine.updateState(action);
148 TRACE_EVENT1("cc", "CCScheduler::processScheduledActions()", "action", a ction); 157 TRACE_EVENT1("cc", "CCScheduler::processScheduledActions()", "action", a ction);
149 158
150 switch (action) { 159 switch (action) {
151 case CCSchedulerStateMachine::ACTION_NONE: 160 case CCSchedulerStateMachine::ACTION_NONE:
152 break; 161 break;
153 case CCSchedulerStateMachine::ACTION_BEGIN_FRAME: 162 case CCSchedulerStateMachine::ACTION_BEGIN_FRAME:
154 m_client->scheduledActionBeginFrame(); 163 m_client->scheduledActionBeginFrame();
155 break; 164 break;
156 case CCSchedulerStateMachine::ACTION_BEGIN_UPDATE_MORE_RESOURCES: 165 case CCSchedulerStateMachine::ACTION_BEGIN_UPDATE_MORE_RESOURCES:
(...skipping 25 matching lines...) Expand all
182 m_client->scheduledActionAcquireLayerTexturesForMainThread(); 191 m_client->scheduledActionAcquireLayerTexturesForMainThread();
183 break; 192 break;
184 } 193 }
185 } while (action != CCSchedulerStateMachine::ACTION_NONE); 194 } while (action != CCSchedulerStateMachine::ACTION_NONE);
186 195
187 // Activate or deactivate the frame rate controller. 196 // Activate or deactivate the frame rate controller.
188 m_frameRateController->setActive(m_stateMachine.vsyncCallbackNeeded()); 197 m_frameRateController->setActive(m_stateMachine.vsyncCallbackNeeded());
189 } 198 }
190 199
191 } 200 }
OLDNEW
« no previous file with comments | « cc/CCScheduler.h ('k') | cc/CCSchedulerStateMachine.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698