Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(180)

Side by Side Diff: cc/trees/layer_tree_host_unittest_context.cc

Issue 337693005: cc: Control defer_commits logic by Scheduler (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698