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 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 TRACE_EVENT0("cc", "ThreadProxy::CheckOutputSurfaceStatusOnImplThread"); | 426 TRACE_EVENT0("cc", "ThreadProxy::CheckOutputSurfaceStatusOnImplThread"); |
427 DCHECK(IsImplThread()); | 427 DCHECK(IsImplThread()); |
428 if (!impl().layer_tree_host_impl->IsContextLost()) | 428 if (!impl().layer_tree_host_impl->IsContextLost()) |
429 return; | 429 return; |
430 if (ContextProvider* offscreen_contexts = | 430 if (ContextProvider* offscreen_contexts = |
431 impl().layer_tree_host_impl->offscreen_context_provider()) | 431 impl().layer_tree_host_impl->offscreen_context_provider()) |
432 offscreen_contexts->VerifyContexts(); | 432 offscreen_contexts->VerifyContexts(); |
433 impl().scheduler->DidLoseOutputSurface(); | 433 impl().scheduler->DidLoseOutputSurface(); |
434 } | 434 } |
435 | 435 |
436 void ThreadProxy::OnSwapBuffersCompleteOnImplThread() { | 436 void ThreadProxy::SetMaxSwapsPendingOnImplThread(int max) { |
437 TRACE_EVENT0("cc", "ThreadProxy::OnSwapBuffersCompleteOnImplThread"); | 437 impl().scheduler->SetMaxSwapsPending(max); |
| 438 } |
| 439 |
| 440 void ThreadProxy::DidSwapBuffersOnImplThread() { |
| 441 impl().scheduler->DidSwapBuffers(); |
| 442 } |
| 443 |
| 444 void ThreadProxy::DidSwapBuffersCompleteOnImplThread() { |
| 445 TRACE_EVENT0("cc", "ThreadProxy::DidSwapBuffersCompleteOnImplThread"); |
438 DCHECK(IsImplThread()); | 446 DCHECK(IsImplThread()); |
| 447 impl().scheduler->DidSwapBuffersComplete(); |
439 Proxy::MainThreadTaskRunner()->PostTask( | 448 Proxy::MainThreadTaskRunner()->PostTask( |
440 FROM_HERE, | 449 FROM_HERE, |
441 base::Bind(&ThreadProxy::DidCompleteSwapBuffers, main_thread_weak_ptr_)); | 450 base::Bind(&ThreadProxy::DidCompleteSwapBuffers, main_thread_weak_ptr_)); |
442 } | 451 } |
443 | 452 |
444 void ThreadProxy::SetNeedsBeginFrame(bool enable) { | 453 void ThreadProxy::SetNeedsBeginFrame(bool enable) { |
445 TRACE_EVENT1("cc", "ThreadProxy::SetNeedsBeginFrame", "enable", enable); | 454 TRACE_EVENT1("cc", "ThreadProxy::SetNeedsBeginFrame", "enable", enable); |
446 impl().layer_tree_host_impl->SetNeedsBeginFrame(enable); | 455 impl().layer_tree_host_impl->SetNeedsBeginFrame(enable); |
447 UpdateBackgroundAnimateTicking(); | 456 UpdateBackgroundAnimateTicking(); |
448 } | 457 } |
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1233 result.did_readback = true; | 1242 result.did_readback = true; |
1234 } else { | 1243 } else { |
1235 result.draw_result = DrawSwapReadbackResult::DRAW_ABORTED_CONTEXT_LOST; | 1244 result.draw_result = DrawSwapReadbackResult::DRAW_ABORTED_CONTEXT_LOST; |
1236 } | 1245 } |
1237 } | 1246 } |
1238 impl().readback_request->success = result.did_readback; | 1247 impl().readback_request->success = result.did_readback; |
1239 impl().readback_request->completion.Signal(); | 1248 impl().readback_request->completion.Signal(); |
1240 impl().readback_request = NULL; | 1249 impl().readback_request = NULL; |
1241 } else if (draw_frame) { | 1250 } else if (draw_frame) { |
1242 DCHECK(swap_requested); | 1251 DCHECK(swap_requested); |
1243 result.did_swap = impl().layer_tree_host_impl->SwapBuffers(frame); | 1252 result.did_request_swap = impl().layer_tree_host_impl->SwapBuffers(frame); |
1244 | 1253 |
1245 // We don't know if we have incomplete tiles if we didn't actually swap. | 1254 // We don't know if we have incomplete tiles if we didn't actually swap. |
1246 if (result.did_swap) { | 1255 if (result.did_request_swap) { |
1247 DCHECK(!frame.has_no_damage); | 1256 DCHECK(!frame.has_no_damage); |
1248 SetSwapUsedIncompleteTileOnImplThread(frame.contains_incomplete_tile); | 1257 SetSwapUsedIncompleteTileOnImplThread(frame.contains_incomplete_tile); |
1249 } | 1258 } |
1250 } | 1259 } |
1251 | 1260 |
1252 // Tell the main thread that the the newly-commited frame was drawn. | 1261 // Tell the main thread that the the newly-commited frame was drawn. |
1253 if (impl().next_frame_is_newly_committed_frame) { | 1262 if (impl().next_frame_is_newly_committed_frame) { |
1254 impl().next_frame_is_newly_committed_frame = false; | 1263 impl().next_frame_is_newly_committed_frame = false; |
1255 Proxy::MainThreadTaskRunner()->PostTask( | 1264 Proxy::MainThreadTaskRunner()->PostTask( |
1256 FROM_HERE, | 1265 FROM_HERE, |
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1690 | 1699 |
1691 impl().timing_history.DidActivatePendingTree(); | 1700 impl().timing_history.DidActivatePendingTree(); |
1692 } | 1701 } |
1693 | 1702 |
1694 void ThreadProxy::DidManageTiles() { | 1703 void ThreadProxy::DidManageTiles() { |
1695 DCHECK(IsImplThread()); | 1704 DCHECK(IsImplThread()); |
1696 impl().scheduler->DidManageTiles(); | 1705 impl().scheduler->DidManageTiles(); |
1697 } | 1706 } |
1698 | 1707 |
1699 } // namespace cc | 1708 } // namespace cc |
OLD | NEW |