diff options
author | miletus@chromium.org <miletus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-27 00:05:19 +0000 |
---|---|---|
committer | miletus@chromium.org <miletus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-27 00:05:19 +0000 |
commit | b69c1dbe6e7252b01f2fc06fb24906c96efce821 (patch) | |
tree | d633eb4d16ead3f91b08ef8f608b7175d8a43daa /cc/test/layer_tree_test.cc | |
parent | a405e37563185523f301deb92436a2db09658c91 (diff) | |
download | chromium_src-b69c1dbe6e7252b01f2fc06fb24906c96efce821.zip chromium_src-b69c1dbe6e7252b01f2fc06fb24906c96efce821.tar.gz chromium_src-b69c1dbe6e7252b01f2fc06fb24906c96efce821.tar.bz2 |
Add SwapPromise support to LayerTreeHost and LayerTreeImpl
When a change to the compositor's state/invalidation/whatever happens, a
Swap Promise can be inserted into LayerTreeHost/LayerTreeImpl, to track
whether the compositor's reply to the new state/invaliadtion/whatever is
completed in the compositor, i.e. the compositor knows it has been sent
to its output or not.
If the new compositor state is sent to the output, SwapPromise::DidSwap()
will be called, and if the compositor fails to send its new state to the
output, e.g. commit fails on main thread, new frame data has no actual
damage so LayerTreeHostImpl::SwapBuffers() bails out early, then
Promise::DidNotSwap() will be called.
BUG=246034, 271583
TEST=unittests pass.
Review URL: https://codereview.chromium.org/60513007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@237444 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/test/layer_tree_test.cc')
-rw-r--r-- | cc/test/layer_tree_test.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/cc/test/layer_tree_test.cc b/cc/test/layer_tree_test.cc index d70d797..de0b907 100644 --- a/cc/test/layer_tree_test.cc +++ b/cc/test/layer_tree_test.cc @@ -409,6 +409,13 @@ void LayerTreeTest::PostSetNeedsCommitToMainThread() { main_thread_weak_ptr_)); } +void LayerTreeTest::PostSetNeedsUpdateLayersToMainThread() { + main_task_runner_->PostTask( + FROM_HERE, + base::Bind(&LayerTreeTest::DispatchSetNeedsUpdateLayers, + main_thread_weak_ptr_)); +} + void LayerTreeTest::PostReadbackToMainThread() { main_task_runner_->PostTask( FROM_HERE, @@ -538,6 +545,13 @@ void LayerTreeTest::DispatchSetNeedsCommit() { layer_tree_host_->SetNeedsCommit(); } +void LayerTreeTest::DispatchSetNeedsUpdateLayers() { + DCHECK(!proxy() || proxy()->IsMainThread()); + + if (layer_tree_host_) + layer_tree_host_->SetNeedsUpdateLayers(); +} + void LayerTreeTest::DispatchReadback() { DCHECK(!proxy() || proxy()->IsMainThread()); |