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

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

Issue 132543002: Not for review. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 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/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 1392 matching lines...) Expand 10 before | Expand all | Expand 10 after
1403 1403
1404 renderer_->DrawFrame(&frame->render_passes, 1404 renderer_->DrawFrame(&frame->render_passes,
1405 offscreen_context_provider_.get(), 1405 offscreen_context_provider_.get(),
1406 device_scale_factor_, 1406 device_scale_factor_,
1407 DeviceViewport(), 1407 DeviceViewport(),
1408 DeviceClip(), 1408 DeviceClip(),
1409 allow_partial_swap, 1409 allow_partial_swap,
1410 false); 1410 false);
1411 } 1411 }
1412 // The render passes should be consumed by the renderer. 1412 // The render passes should be consumed by the renderer.
1413 DCHECK(frame->render_passes.empty()); 1413 // DCHECK(frame->render_passes.empty());
1414 frame->render_passes_by_id.clear(); 1414 frame->render_passes_by_id.clear();
1415 1415
1416 // The next frame should start by assuming nothing has changed, and changes 1416 // The next frame should start by assuming nothing has changed, and changes
1417 // are noted as they occur. 1417 // are noted as they occur.
1418 // TODO(boliu): If we did a temporary software renderer frame, propogate the 1418 // TODO(boliu): If we did a temporary software renderer frame, propogate the
1419 // damage forward to the next frame. 1419 // damage forward to the next frame.
1420 for (size_t i = 0; i < frame->render_surface_layer_list->size(); i++) { 1420 for (size_t i = 0; i < frame->render_surface_layer_list->size(); i++) {
1421 (*frame->render_surface_layer_list)[i]->render_surface()->damage_tracker()-> 1421 (*frame->render_surface_layer_list)[i]->render_surface()->damage_tracker()->
1422 DidDrawDamagedArea(); 1422 DidDrawDamagedArea();
1423 } 1423 }
(...skipping 26 matching lines...) Expand all
1450 const RendererCapabilities& LayerTreeHostImpl::GetRendererCapabilities() const { 1450 const RendererCapabilities& LayerTreeHostImpl::GetRendererCapabilities() const {
1451 return renderer_->Capabilities(); 1451 return renderer_->Capabilities();
1452 } 1452 }
1453 1453
1454 bool LayerTreeHostImpl::SwapBuffers(const LayerTreeHostImpl::FrameData& frame) { 1454 bool LayerTreeHostImpl::SwapBuffers(const LayerTreeHostImpl::FrameData& frame) {
1455 if (frame.has_no_damage) { 1455 if (frame.has_no_damage) {
1456 active_tree()->BreakSwapPromises(SwapPromise::SWAP_FAILS); 1456 active_tree()->BreakSwapPromises(SwapPromise::SWAP_FAILS);
1457 return false; 1457 return false;
1458 } 1458 }
1459 CompositorFrameMetadata metadata = MakeCompositorFrameMetadata(); 1459 CompositorFrameMetadata metadata = MakeCompositorFrameMetadata();
1460
1461 for (size_t i = 0; i < frame.render_passes.size(); i++) {
1462 if (frame.render_passes[i]->handled_by_overlay_hardware) {
1463 metadata.overlay_position = frame.render_passes[i]->overlay_hardware_rect;
1464 QuadList& quad_list = frame.render_passes[i]->quad_list;
1465 const DrawQuad& quad = *(*quad_list.BackToFrontBegin());
1466 metadata.overlay_texture_id_ = 0;
1467 if (quad.material == DrawQuad::TEXTURE_CONTENT) {
1468 const TextureDrawQuad* tex_quad = TextureDrawQuad::MaterialCast(&quad);
1469 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(),
1470 tex_quad->resource_id);
1471 metadata.overlay_texture_id_ = lock.texture_id();
1472 }
1473
1474 break;
1475 }
1476 }
1477
1460 active_tree()->FinishSwapPromises(&metadata); 1478 active_tree()->FinishSwapPromises(&metadata);
1461 renderer_->SwapBuffers(metadata); 1479 renderer_->SwapBuffers(metadata);
1462 return true; 1480 return true;
1463 } 1481 }
1464 1482
1465 void LayerTreeHostImpl::SetNeedsBeginImplFrame(bool enable) { 1483 void LayerTreeHostImpl::SetNeedsBeginImplFrame(bool enable) {
1466 if (output_surface_) 1484 if (output_surface_)
1467 output_surface_->SetNeedsBeginImplFrame(enable); 1485 output_surface_->SetNeedsBeginImplFrame(enable);
1468 } 1486 }
1469 1487
(...skipping 1444 matching lines...) Expand 10 before | Expand all | Expand 10 after
2914 swap_promise_monitor_.erase(monitor); 2932 swap_promise_monitor_.erase(monitor);
2915 } 2933 }
2916 2934
2917 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { 2935 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() {
2918 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); 2936 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin();
2919 for (; it != swap_promise_monitor_.end(); it++) 2937 for (; it != swap_promise_monitor_.end(); it++)
2920 (*it)->OnSetNeedsRedrawOnImpl(); 2938 (*it)->OnSetNeedsRedrawOnImpl();
2921 } 2939 }
2922 2940
2923 } // namespace cc 2941 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698