| 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 |