OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "cc/layers/content_layer.h" | 8 #include "cc/layers/content_layer.h" |
9 #include "cc/layers/delegated_frame_provider.h" | 9 #include "cc/layers/delegated_frame_provider.h" |
10 #include "cc/layers/delegated_frame_resource_collection.h" | 10 #include "cc/layers/delegated_frame_resource_collection.h" |
(...skipping 1752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1763 deferred_ = false; | 1763 deferred_ = false; |
1764 PostSetNeedsCommitToMainThread(); | 1764 PostSetNeedsCommitToMainThread(); |
1765 } | 1765 } |
1766 | 1766 |
1767 void ScheduledActionWillSendBeginMainFrame() override { | 1767 void ScheduledActionWillSendBeginMainFrame() override { |
1768 if (deferred_) | 1768 if (deferred_) |
1769 return; | 1769 return; |
1770 deferred_ = true; | 1770 deferred_ = true; |
1771 | 1771 |
1772 // Defer commits before the BeginFrame arrives, causing it to be delayed. | 1772 // Defer commits before the BeginFrame arrives, causing it to be delayed. |
1773 MainThreadTaskRunner()->PostTask( | 1773 PostSetDeferCommitsToMainThread(true); |
1774 FROM_HERE, | |
1775 base::Bind(&LayerTreeHostContextTestLoseAfterSendingBeginMainFrame:: | |
1776 DeferCommitsOnMainThread, | |
1777 base::Unretained(this), | |
1778 true)); | |
1779 // Meanwhile, lose the context while we are in defer commits. | 1774 // Meanwhile, lose the context while we are in defer commits. |
1780 ImplThreadTaskRunner()->PostTask( | 1775 ImplThreadTaskRunner()->PostTask( |
1781 FROM_HERE, | 1776 FROM_HERE, |
1782 base::Bind(&LayerTreeHostContextTestLoseAfterSendingBeginMainFrame:: | 1777 base::Bind(&LayerTreeHostContextTestLoseAfterSendingBeginMainFrame:: |
1783 LoseContextOnImplThread, | 1778 LoseContextOnImplThread, |
1784 base::Unretained(this))); | 1779 base::Unretained(this))); |
1785 } | 1780 } |
1786 | 1781 |
1787 void LoseContextOnImplThread() { | 1782 void LoseContextOnImplThread() { |
1788 LoseContext(); | 1783 LoseContext(); |
1789 | 1784 |
1790 // After losing the context, stop deferring commits. | 1785 // After losing the context, stop deferring commits. |
1791 MainThreadTaskRunner()->PostTask( | 1786 PostSetDeferCommitsToMainThread(false); |
1792 FROM_HERE, | |
1793 base::Bind(&LayerTreeHostContextTestLoseAfterSendingBeginMainFrame:: | |
1794 DeferCommitsOnMainThread, | |
1795 base::Unretained(this), | |
1796 false)); | |
1797 } | |
1798 | |
1799 void DeferCommitsOnMainThread(bool defer_commits) { | |
1800 layer_tree_host()->SetDeferCommits(defer_commits); | |
1801 } | 1787 } |
1802 | 1788 |
1803 void WillBeginMainFrame() override { | 1789 void WillBeginMainFrame() override { |
1804 // Don't begin a frame with a lost surface. | 1790 // Don't begin a frame with a lost surface. |
1805 EXPECT_FALSE(layer_tree_host()->output_surface_lost()); | 1791 EXPECT_FALSE(layer_tree_host()->output_surface_lost()); |
1806 } | 1792 } |
1807 | 1793 |
1808 void DidCommitAndDrawFrame() override { EndTest(); } | 1794 void DidCommitAndDrawFrame() override { EndTest(); } |
1809 | 1795 |
1810 void AfterTest() override {} | 1796 void AfterTest() override {} |
1811 | 1797 |
1812 bool deferred_; | 1798 bool deferred_; |
1813 }; | 1799 }; |
1814 | 1800 |
1815 SINGLE_AND_MULTI_THREAD_TEST_F( | 1801 SINGLE_AND_MULTI_THREAD_TEST_F( |
1816 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); | 1802 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); |
1817 | 1803 |
1818 } // namespace | 1804 } // namespace |
1819 } // namespace cc | 1805 } // namespace cc |
OLD | NEW |