OLD | NEW |
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 #include "cc/scheduler/scheduler.h" | 4 #include "cc/scheduler/scheduler.h" |
5 | 5 |
6 #include <string> | 6 #include <string> |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/memory/scoped_vector.h" | 10 #include "base/memory/scoped_vector.h" |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 } | 108 } |
109 virtual void ScheduledActionSendBeginMainFrame() OVERRIDE { | 109 virtual void ScheduledActionSendBeginMainFrame() OVERRIDE { |
110 actions_.push_back("ScheduledActionSendBeginMainFrame"); | 110 actions_.push_back("ScheduledActionSendBeginMainFrame"); |
111 states_.push_back(scheduler_->StateAsValue().release()); | 111 states_.push_back(scheduler_->StateAsValue().release()); |
112 } | 112 } |
113 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapIfPossible() | 113 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapIfPossible() |
114 OVERRIDE { | 114 OVERRIDE { |
115 actions_.push_back("ScheduledActionDrawAndSwapIfPossible"); | 115 actions_.push_back("ScheduledActionDrawAndSwapIfPossible"); |
116 states_.push_back(scheduler_->StateAsValue().release()); | 116 states_.push_back(scheduler_->StateAsValue().release()); |
117 num_draws_++; | 117 num_draws_++; |
118 bool did_readback = false; | |
119 DrawSwapReadbackResult::DrawResult result = | 118 DrawSwapReadbackResult::DrawResult result = |
120 draw_will_happen_ | 119 draw_will_happen_ |
121 ? DrawSwapReadbackResult::DRAW_SUCCESS | 120 ? DrawSwapReadbackResult::DRAW_SUCCESS |
122 : DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS; | 121 : DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS; |
123 bool swap_will_happen = | 122 bool swap_will_happen = |
124 draw_will_happen_ && swap_will_happen_if_draw_happens_; | 123 draw_will_happen_ && swap_will_happen_if_draw_happens_; |
125 if (swap_will_happen) { | 124 if (swap_will_happen) { |
126 scheduler_->DidSwapBuffers(); | 125 scheduler_->DidSwapBuffers(); |
127 if (automatic_swap_ack_) | 126 if (automatic_swap_ack_) |
128 scheduler_->DidSwapBuffersComplete(); | 127 scheduler_->DidSwapBuffersComplete(); |
129 } | 128 } |
130 return DrawSwapReadbackResult( | 129 return DrawSwapReadbackResult(result); |
131 result, | |
132 draw_will_happen_ && swap_will_happen_if_draw_happens_, | |
133 did_readback); | |
134 } | 130 } |
135 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapForced() OVERRIDE { | 131 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapForced() OVERRIDE { |
136 actions_.push_back("ScheduledActionDrawAndSwapForced"); | 132 actions_.push_back("ScheduledActionDrawAndSwapForced"); |
137 states_.push_back(scheduler_->StateAsValue().release()); | 133 states_.push_back(scheduler_->StateAsValue().release()); |
138 bool did_request_swap = swap_will_happen_if_draw_happens_; | 134 return DrawSwapReadbackResult(DrawSwapReadbackResult::DRAW_SUCCESS); |
139 bool did_readback = false; | |
140 return DrawSwapReadbackResult( | |
141 DrawSwapReadbackResult::DRAW_SUCCESS, did_request_swap, did_readback); | |
142 } | 135 } |
143 virtual DrawSwapReadbackResult ScheduledActionDrawAndReadback() OVERRIDE { | 136 virtual DrawSwapReadbackResult ScheduledActionDrawAndReadback() OVERRIDE { |
144 actions_.push_back("ScheduledActionDrawAndReadback"); | 137 actions_.push_back("ScheduledActionDrawAndReadback"); |
145 states_.push_back(scheduler_->StateAsValue().release()); | 138 states_.push_back(scheduler_->StateAsValue().release()); |
146 bool did_request_swap = false; | 139 return DrawSwapReadbackResult(DrawSwapReadbackResult::DRAW_SUCCESS); |
147 bool did_readback = true; | |
148 return DrawSwapReadbackResult( | |
149 DrawSwapReadbackResult::DRAW_SUCCESS, did_request_swap, did_readback); | |
150 } | 140 } |
151 virtual void ScheduledActionCommit() OVERRIDE { | 141 virtual void ScheduledActionCommit() OVERRIDE { |
152 actions_.push_back("ScheduledActionCommit"); | 142 actions_.push_back("ScheduledActionCommit"); |
153 states_.push_back(scheduler_->StateAsValue().release()); | 143 states_.push_back(scheduler_->StateAsValue().release()); |
154 } | 144 } |
155 virtual void ScheduledActionUpdateVisibleTiles() OVERRIDE { | 145 virtual void ScheduledActionUpdateVisibleTiles() OVERRIDE { |
156 actions_.push_back("ScheduledActionUpdateVisibleTiles"); | 146 actions_.push_back("ScheduledActionUpdateVisibleTiles"); |
157 states_.push_back(scheduler_->StateAsValue().release()); | 147 states_.push_back(scheduler_->StateAsValue().release()); |
158 } | 148 } |
159 virtual void ScheduledActionActivatePendingTree() OVERRIDE { | 149 virtual void ScheduledActionActivatePendingTree() OVERRIDE { |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapIfPossible() | 375 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapIfPossible() |
386 OVERRIDE { | 376 OVERRIDE { |
387 // Only SetNeedsRedraw the first time this is called | 377 // Only SetNeedsRedraw the first time this is called |
388 if (!num_draws_) | 378 if (!num_draws_) |
389 scheduler_->SetNeedsRedraw(); | 379 scheduler_->SetNeedsRedraw(); |
390 return FakeSchedulerClient::ScheduledActionDrawAndSwapIfPossible(); | 380 return FakeSchedulerClient::ScheduledActionDrawAndSwapIfPossible(); |
391 } | 381 } |
392 | 382 |
393 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapForced() OVERRIDE { | 383 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapForced() OVERRIDE { |
394 NOTREACHED(); | 384 NOTREACHED(); |
395 bool did_request_swap = true; | 385 return DrawSwapReadbackResult(DrawSwapReadbackResult::DRAW_SUCCESS); |
396 bool did_readback = false; | |
397 return DrawSwapReadbackResult( | |
398 DrawSwapReadbackResult::DRAW_SUCCESS, did_request_swap, did_readback); | |
399 } | 386 } |
400 | 387 |
401 virtual void ScheduledActionCommit() OVERRIDE {} | 388 virtual void ScheduledActionCommit() OVERRIDE {} |
402 virtual void ScheduledActionBeginOutputSurfaceCreation() OVERRIDE {} | 389 virtual void ScheduledActionBeginOutputSurfaceCreation() OVERRIDE {} |
403 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks) OVERRIDE {} | 390 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks) OVERRIDE {} |
404 }; | 391 }; |
405 | 392 |
406 // Tests for two different situations: | 393 // Tests for two different situations: |
407 // 1. the scheduler dropping SetNeedsRedraw requests that happen inside | 394 // 1. the scheduler dropping SetNeedsRedraw requests that happen inside |
408 // a ScheduledActionDrawAndSwap | 395 // a ScheduledActionDrawAndSwap |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
501 // Only SetNeedsCommit the first time this is called | 488 // Only SetNeedsCommit the first time this is called |
502 if (set_needs_commit_on_next_draw_) { | 489 if (set_needs_commit_on_next_draw_) { |
503 scheduler_->SetNeedsCommit(); | 490 scheduler_->SetNeedsCommit(); |
504 set_needs_commit_on_next_draw_ = false; | 491 set_needs_commit_on_next_draw_ = false; |
505 } | 492 } |
506 return FakeSchedulerClient::ScheduledActionDrawAndSwapIfPossible(); | 493 return FakeSchedulerClient::ScheduledActionDrawAndSwapIfPossible(); |
507 } | 494 } |
508 | 495 |
509 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapForced() OVERRIDE { | 496 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapForced() OVERRIDE { |
510 NOTREACHED(); | 497 NOTREACHED(); |
511 bool did_request_swap = false; | 498 return DrawSwapReadbackResult(DrawSwapReadbackResult::DRAW_SUCCESS); |
512 bool did_readback = false; | |
513 return DrawSwapReadbackResult( | |
514 DrawSwapReadbackResult::DRAW_SUCCESS, did_request_swap, did_readback); | |
515 } | 499 } |
516 | 500 |
517 virtual void ScheduledActionCommit() OVERRIDE {} | 501 virtual void ScheduledActionCommit() OVERRIDE {} |
518 virtual void ScheduledActionBeginOutputSurfaceCreation() OVERRIDE {} | 502 virtual void ScheduledActionBeginOutputSurfaceCreation() OVERRIDE {} |
519 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks) OVERRIDE {} | 503 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks) OVERRIDE {} |
520 | 504 |
521 void SetNeedsCommitOnNextDraw() { set_needs_commit_on_next_draw_ = true; } | 505 void SetNeedsCommitOnNextDraw() { set_needs_commit_on_next_draw_ = true; } |
522 | 506 |
523 private: | 507 private: |
524 bool set_needs_commit_on_next_draw_; | 508 bool set_needs_commit_on_next_draw_; |
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1275 client.task_runner().RunPendingTasks(); // Run posted deadline. | 1259 client.task_runner().RunPendingTasks(); // Run posted deadline. |
1276 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 0, 2); | 1260 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 0, 2); |
1277 EXPECT_ACTION("SetNeedsBeginFrame", client, 1, 2); | 1261 EXPECT_ACTION("SetNeedsBeginFrame", client, 1, 2); |
1278 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); | 1262 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); |
1279 EXPECT_TRUE(client.needs_begin_impl_frame()); | 1263 EXPECT_TRUE(client.needs_begin_impl_frame()); |
1280 client.Reset(); | 1264 client.Reset(); |
1281 } | 1265 } |
1282 | 1266 |
1283 } // namespace | 1267 } // namespace |
1284 } // namespace cc | 1268 } // namespace cc |
OLD | NEW |