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()); |
danakj
2013/07/17 20:53:24
I'm having trouble convincing myself that we will
enne (OOO)
2013/07/18 17:36:37
Different begin frames. SetNeedsBeginFrameOnImplT
| |
385 EXPECT_SINGLE_ACTION("ScheduledActionSendBeginFrameToMainThread", client); | 390 EXPECT_ACTION("ScheduledActionSendBeginFrameToMainThread", client, 0, 2); |
391 EXPECT_ACTION("SetNeedsBeginFrameOnImplThread", client, 1, 2); | |
386 client.Reset(); | 392 client.Reset(); |
387 } | 393 } |
388 | 394 |
389 class SchedulerClientThatsetNeedsDrawInsideDraw : public FakeSchedulerClient { | 395 class SchedulerClientThatsetNeedsDrawInsideDraw : public FakeSchedulerClient { |
390 public: | 396 public: |
391 virtual void ScheduledActionSendBeginFrameToMainThread() OVERRIDE {} | 397 virtual void ScheduledActionSendBeginFrameToMainThread() OVERRIDE {} |
392 virtual ScheduledActionDrawAndSwapResult | 398 virtual ScheduledActionDrawAndSwapResult |
393 ScheduledActionDrawAndSwapIfPossible() OVERRIDE { | 399 ScheduledActionDrawAndSwapIfPossible() OVERRIDE { |
394 // Only SetNeedsRedraw the first time this is called | 400 // Only SetNeedsRedraw the first time this is called |
395 if (!num_draws_) | 401 if (!num_draws_) |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
613 | 619 |
614 // Get the compositor to do a ScheduledActionDrawAndSwapForced. | 620 // Get the compositor to do a ScheduledActionDrawAndSwapForced. |
615 scheduler->SetCanDraw(true); | 621 scheduler->SetCanDraw(true); |
616 scheduler->SetNeedsRedraw(); | 622 scheduler->SetNeedsRedraw(); |
617 scheduler->SetNeedsForcedRedraw(); | 623 scheduler->SetNeedsForcedRedraw(); |
618 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapForced")); | 624 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapForced")); |
619 } | 625 } |
620 | 626 |
621 } // namespace | 627 } // namespace |
622 } // namespace cc | 628 } // namespace cc |
OLD | NEW |