summaryrefslogtreecommitdiffstats
path: root/cc/test/layer_tree_test.cc
diff options
context:
space:
mode:
authormiletus@chromium.org <miletus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-27 00:05:19 +0000
committermiletus@chromium.org <miletus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-27 00:05:19 +0000
commitb69c1dbe6e7252b01f2fc06fb24906c96efce821 (patch)
treed633eb4d16ead3f91b08ef8f608b7175d8a43daa /cc/test/layer_tree_test.cc
parenta405e37563185523f301deb92436a2db09658c91 (diff)
downloadchromium_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.cc14
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());