diff options
author | nkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-28 17:57:32 +0000 |
---|---|---|
committer | nkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-28 17:57:32 +0000 |
commit | dfbded2d19eea373728491177ddfab62f79b6bce (patch) | |
tree | e74919f3d6124e47f7aa670c1c8386042226d910 /cc/test/layer_tree_test.cc | |
parent | a02439a8031557d1201383ff170aef4869996cbd (diff) | |
download | chromium_src-dfbded2d19eea373728491177ddfab62f79b6bce.zip chromium_src-dfbded2d19eea373728491177ddfab62f79b6bce.tar.gz chromium_src-dfbded2d19eea373728491177ddfab62f79b6bce.tar.bz2 |
Revert 280493 "Make SingleThreadProxy a SchedulerClient"
Reason for revert:
Check if this CL breaks TouchActionBrowserTest.TouchActionNone test http://goo.gl/pwdNwL
Also it was reported that this CL causing a number of crashes on the blink bots, e.g.,
http://build.chromium.org/p/tryserver.blink/builders/linux_blink_rel
> Make SingleThreadProxy a SchedulerClient
>
> This makes ui::Compositor no longer in charge of
> scheduling commits and draws, deferring it to cc::Scheduler.
>
> BUG=329552, 287250
>
> Review URL: https://codereview.chromium.org/134623005
TBR=enne@chromium.org
Review URL: https://codereview.chromium.org/359103004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@280521 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/test/layer_tree_test.cc')
-rw-r--r-- | cc/test/layer_tree_test.cc | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/cc/test/layer_tree_test.cc b/cc/test/layer_tree_test.cc index a680441..3437f8c 100644 --- a/cc/test/layer_tree_test.cc +++ b/cc/test/layer_tree_test.cc @@ -321,6 +321,14 @@ class LayerTreeHostClientForTesting : public LayerTreeHostClient, test_hooks_->DidCompleteSwapBuffers(); } + virtual void ScheduleComposite() OVERRIDE { + test_hooks_->ScheduleComposite(); + } + + virtual void ScheduleAnimation() OVERRIDE { + test_hooks_->ScheduleAnimation(); + } + virtual void DidPostSwapBuffers() OVERRIDE {} virtual void DidAbortSwapBuffers() OVERRIDE {} @@ -393,6 +401,7 @@ LayerTreeTest::LayerTreeTest() end_when_begin_returns_(false), timed_out_(false), scheduled_(false), + schedule_when_set_visible_true_(false), started_(false), ended_(false), delegating_renderer_(false), @@ -555,6 +564,15 @@ void LayerTreeTest::Timeout() { EndTest(); } +void LayerTreeTest::ScheduleComposite() { + if (!started_ || scheduled_) + return; + scheduled_ = true; + main_task_runner_->PostTask( + FROM_HERE, + base::Bind(&LayerTreeTest::DispatchComposite, main_thread_weak_ptr_)); +} + void LayerTreeTest::RealEndTest() { if (layer_tree_host_ && proxy()->CommitPendingForTesting()) { main_task_runner_->PostTask( @@ -606,8 +624,16 @@ void LayerTreeTest::DispatchSetNeedsRedrawRect(const gfx::Rect& damage_rect) { void LayerTreeTest::DispatchSetVisible(bool visible) { DCHECK(!proxy() || proxy()->IsMainThread()); - if (layer_tree_host_) - layer_tree_host_->SetVisible(visible); + + if (!layer_tree_host_) + return; + + layer_tree_host_->SetVisible(visible); + + // If the LTH is being made visible and a previous ScheduleComposite() was + // deferred because the LTH was not visible, re-schedule the composite now. + if (layer_tree_host_->visible() && schedule_when_set_visible_true_) + ScheduleComposite(); } void LayerTreeTest::DispatchSetNextCommitForcesRedraw() { @@ -617,6 +643,24 @@ void LayerTreeTest::DispatchSetNextCommitForcesRedraw() { layer_tree_host_->SetNextCommitForcesRedraw(); } +void LayerTreeTest::DispatchComposite() { + scheduled_ = false; + + if (!layer_tree_host_) + return; + + // If the LTH is not visible, defer the composite until the LTH is made + // visible. + if (!layer_tree_host_->visible()) { + schedule_when_set_visible_true_ = true; + return; + } + + schedule_when_set_visible_true_ = false; + base::TimeTicks now = gfx::FrameTime::Now(); + layer_tree_host_->Composite(now); +} + void LayerTreeTest::RunTest(bool threaded, bool delegating_renderer, bool impl_side_painting) { |