| 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 | 4 |
| 5 #include "cc/scheduler/scheduler.h" | 5 #include "cc/scheduler/scheduler.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 scheduler->SetMainThreadNeedsLayerTextures(); | 371 scheduler->SetMainThreadNeedsLayerTextures(); |
| 372 scheduler->SetNeedsCommit(); | 372 scheduler->SetNeedsCommit(); |
| 373 client.Reset(); | 373 client.Reset(); |
| 374 // Verify that pending texture acquisition fires when visibility | 374 // Verify that pending texture acquisition fires when visibility |
| 375 // is lost in order to avoid a deadlock. | 375 // is lost in order to avoid a deadlock. |
| 376 scheduler->SetVisible(false); | 376 scheduler->SetVisible(false); |
| 377 EXPECT_SINGLE_ACTION("ScheduledActionAcquireLayerTexturesForMainThread", | 377 EXPECT_SINGLE_ACTION("ScheduledActionAcquireLayerTexturesForMainThread", |
| 378 client); | 378 client); |
| 379 client.Reset(); | 379 client.Reset(); |
| 380 | 380 |
| 381 // Already sent a begin frame on this current frame, so wait. |
| 382 scheduler->SetVisible(true); |
| 383 EXPECT_EQ(0, client.num_actions_()); |
| 384 client.Reset(); |
| 385 |
| 381 // Regaining visibility with textures acquired by main thread while | 386 // Regaining visibility with textures acquired by main thread while |
| 382 // compositor is waiting for first draw should result in a request | 387 // compositor is waiting for first draw should result in a request |
| 383 // for a new frame in order to escape a deadlock. | 388 // for a new frame in order to escape a deadlock. |
| 384 scheduler->SetVisible(true); | 389 scheduler->BeginFrame(BeginFrameArgs::CreateForTesting()); |
| 385 EXPECT_SINGLE_ACTION("ScheduledActionSendBeginFrameToMainThread", client); | 390 EXPECT_ACTION("ScheduledActionSendBeginFrameToMainThread", client, 0, 2); |
| 386 client.Reset(); | 391 EXPECT_ACTION("SetNeedsBeginFrameOnImplThread", client, 1, 2); |
| 387 } | 392 } |
| 388 | 393 |
| 389 class SchedulerClientThatsetNeedsDrawInsideDraw : public FakeSchedulerClient { | 394 class SchedulerClientThatsetNeedsDrawInsideDraw : public FakeSchedulerClient { |
| 390 public: | 395 public: |
| 391 virtual void ScheduledActionSendBeginFrameToMainThread() OVERRIDE {} | 396 virtual void ScheduledActionSendBeginFrameToMainThread() OVERRIDE {} |
| 392 virtual ScheduledActionDrawAndSwapResult | 397 virtual ScheduledActionDrawAndSwapResult |
| 393 ScheduledActionDrawAndSwapIfPossible() OVERRIDE { | 398 ScheduledActionDrawAndSwapIfPossible() OVERRIDE { |
| 394 // Only SetNeedsRedraw the first time this is called | 399 // Only SetNeedsRedraw the first time this is called |
| 395 if (!num_draws_) | 400 if (!num_draws_) |
| 396 scheduler_->SetNeedsRedraw(); | 401 scheduler_->SetNeedsRedraw(); |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 613 | 618 |
| 614 // Get the compositor to do a ScheduledActionDrawAndSwapForced. | 619 // Get the compositor to do a ScheduledActionDrawAndSwapForced. |
| 615 scheduler->SetCanDraw(true); | 620 scheduler->SetCanDraw(true); |
| 616 scheduler->SetNeedsRedraw(); | 621 scheduler->SetNeedsRedraw(); |
| 617 scheduler->SetNeedsForcedRedraw(); | 622 scheduler->SetNeedsForcedRedraw(); |
| 618 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapForced")); | 623 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapForced")); |
| 619 } | 624 } |
| 620 | 625 |
| 621 } // namespace | 626 } // namespace |
| 622 } // namespace cc | 627 } // namespace cc |
| OLD | NEW |