OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/thread_proxy.h" | 5 #include "cc/trees/thread_proxy.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 bool commit_pending; | 57 bool commit_pending; |
58 }; | 58 }; |
59 | 59 |
60 struct ThreadProxy::SchedulerStateRequest { | 60 struct ThreadProxy::SchedulerStateRequest { |
61 CompletionEvent completion; | 61 CompletionEvent completion; |
62 scoped_ptr<base::Value> state; | 62 scoped_ptr<base::Value> state; |
63 }; | 63 }; |
64 | 64 |
65 scoped_ptr<Proxy> ThreadProxy::Create( | 65 scoped_ptr<Proxy> ThreadProxy::Create( |
66 LayerTreeHost* layer_tree_host, | 66 LayerTreeHost* layer_tree_host, |
| 67 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
67 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { | 68 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { |
68 return make_scoped_ptr(new ThreadProxy(layer_tree_host, impl_task_runner)) | 69 return make_scoped_ptr(new ThreadProxy(layer_tree_host, |
69 .PassAs<Proxy>(); | 70 main_task_runner, |
| 71 impl_task_runner)).PassAs<Proxy>(); |
70 } | 72 } |
71 | 73 |
72 ThreadProxy::ThreadProxy( | 74 ThreadProxy::ThreadProxy( |
73 LayerTreeHost* layer_tree_host, | 75 LayerTreeHost* layer_tree_host, |
| 76 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
74 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) | 77 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) |
75 : Proxy(impl_task_runner), | 78 : Proxy(main_task_runner, impl_task_runner), |
76 main_thread_only_vars_unsafe_(this, layer_tree_host->id()), | 79 main_thread_only_vars_unsafe_(this, layer_tree_host->id()), |
77 main_thread_or_blocked_vars_unsafe_(layer_tree_host), | 80 main_thread_or_blocked_vars_unsafe_(layer_tree_host), |
78 compositor_thread_vars_unsafe_(this, layer_tree_host->id()) { | 81 compositor_thread_vars_unsafe_(this, layer_tree_host->id()) { |
79 TRACE_EVENT0("cc", "ThreadProxy::ThreadProxy"); | 82 TRACE_EVENT0("cc", "ThreadProxy::ThreadProxy"); |
80 DCHECK(IsMainThread()); | 83 DCHECK(IsMainThread()); |
81 DCHECK(this->layer_tree_host()); | 84 DCHECK(this->layer_tree_host()); |
82 } | 85 } |
83 | 86 |
84 ThreadProxy::MainThreadOnly::MainThreadOnly(ThreadProxy* proxy, | 87 ThreadProxy::MainThreadOnly::MainThreadOnly(ThreadProxy* proxy, |
85 int layer_tree_host_id) | 88 int layer_tree_host_id) |
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
458 void ThreadProxy::SetDeferCommits(bool defer_commits) { | 461 void ThreadProxy::SetDeferCommits(bool defer_commits) { |
459 DCHECK(IsMainThread()); | 462 DCHECK(IsMainThread()); |
460 DCHECK_NE(main().defer_commits, defer_commits); | 463 DCHECK_NE(main().defer_commits, defer_commits); |
461 main().defer_commits = defer_commits; | 464 main().defer_commits = defer_commits; |
462 | 465 |
463 if (main().defer_commits) | 466 if (main().defer_commits) |
464 TRACE_EVENT_ASYNC_BEGIN0("cc", "ThreadProxy::SetDeferCommits", this); | 467 TRACE_EVENT_ASYNC_BEGIN0("cc", "ThreadProxy::SetDeferCommits", this); |
465 else | 468 else |
466 TRACE_EVENT_ASYNC_END0("cc", "ThreadProxy::SetDeferCommits", this); | 469 TRACE_EVENT_ASYNC_END0("cc", "ThreadProxy::SetDeferCommits", this); |
467 | 470 |
468 if (!main().defer_commits && main().pending_deferred_commit) | 471 if (!main().defer_commits && main().pending_deferred_commit) { |
469 Proxy::MainThreadTaskRunner()->PostTask( | 472 Proxy::MainThreadTaskRunner()->PostTask( |
470 FROM_HERE, | 473 FROM_HERE, |
471 base::Bind(&ThreadProxy::BeginMainFrame, | 474 base::Bind(&ThreadProxy::BeginMainFrame, |
472 main_thread_weak_ptr_, | 475 main_thread_weak_ptr_, |
473 base::Passed(&main().pending_deferred_commit))); | 476 base::Passed(&main().pending_deferred_commit))); |
| 477 } |
474 } | 478 } |
475 | 479 |
476 bool ThreadProxy::CommitRequested() const { | 480 bool ThreadProxy::CommitRequested() const { |
477 DCHECK(IsMainThread()); | 481 DCHECK(IsMainThread()); |
478 return main().commit_requested; | 482 return main().commit_requested; |
479 } | 483 } |
480 | 484 |
481 bool ThreadProxy::BeginMainFrameRequested() const { | 485 bool ThreadProxy::BeginMainFrameRequested() const { |
482 DCHECK(IsMainThread()); | 486 DCHECK(IsMainThread()); |
483 return main().commit_request_sent_to_impl_thread; | 487 return main().commit_request_sent_to_impl_thread; |
(...skipping 966 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1450 | 1454 |
1451 impl().timing_history.DidActivateSyncTree(); | 1455 impl().timing_history.DidActivateSyncTree(); |
1452 } | 1456 } |
1453 | 1457 |
1454 void ThreadProxy::DidManageTiles() { | 1458 void ThreadProxy::DidManageTiles() { |
1455 DCHECK(IsImplThread()); | 1459 DCHECK(IsImplThread()); |
1456 impl().scheduler->DidManageTiles(); | 1460 impl().scheduler->DidManageTiles(); |
1457 } | 1461 } |
1458 | 1462 |
1459 } // namespace cc | 1463 } // namespace cc |
OLD | NEW |