Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/surfaces/compositor_frame_sink_support.h" | 5 #include "cc/surfaces/compositor_frame_sink_support.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 69 needs_begin_frame_ = needs_begin_frame; | 69 needs_begin_frame_ = needs_begin_frame; |
| 70 UpdateNeedsBeginFramesInternal(); | 70 UpdateNeedsBeginFramesInternal(); |
| 71 } | 71 } |
| 72 | 72 |
| 73 void CompositorFrameSinkSupport::SubmitCompositorFrame( | 73 void CompositorFrameSinkSupport::SubmitCompositorFrame( |
| 74 const LocalSurfaceId& local_surface_id, | 74 const LocalSurfaceId& local_surface_id, |
| 75 CompositorFrame frame) { | 75 CompositorFrame frame) { |
| 76 ++ack_pending_count_; | 76 ++ack_pending_count_; |
| 77 float device_scale_factor = frame.metadata.device_scale_factor; | 77 float device_scale_factor = frame.metadata.device_scale_factor; |
| 78 | 78 |
| 79 surface_factory_.SubmitCompositorFrame( | |
| 80 local_surface_id, std::move(frame), | |
| 81 base::Bind(&CompositorFrameSinkSupport::DidReceiveCompositorFrameAck, | |
| 82 weak_factory_.GetWeakPtr())); | |
| 83 | |
| 79 if (surface_manager_->using_surface_references()) { | 84 if (surface_manager_->using_surface_references()) { |
| 80 SurfaceId last_surface_id = reference_tracker_.current_surface_id(); | 85 SurfaceId last_surface_id = reference_tracker_.current_surface_id(); |
| 81 | 86 |
| 82 // Populate list of surface references to add and remove based on reference | 87 // Populate list of surface references to add and remove based on reference |
| 83 // surfaces in current frame compared with the last frame. | 88 // surfaces in current frame compared with the last frame. The list of |
| 84 reference_tracker_.UpdateReferences(local_surface_id, | 89 // surface references includes references from both the pending and active |
| 85 frame.metadata.referenced_surfaces); | 90 // frame if any. |
| 91 SurfaceId current_surface_id(frame_sink_id_, local_surface_id); | |
| 92 Surface* surface = surface_manager_->GetSurfaceForId(current_surface_id); | |
| 93 std::vector<SurfaceId> referenced_surfaces = surface->referenced_surfaces(); | |
| 86 | 94 |
| 87 surface_factory_.SubmitCompositorFrame( | 95 referenced_surfaces.insert(referenced_surfaces.end(), |
|
vmpstr
2017/02/10 00:24:40
This is, somewhat poor from an API perspective.
i
Fady Samuel
2017/02/10 00:55:30
I have renamed referenced_surfaces => active_refer
| |
| 88 local_surface_id, std::move(frame), | 96 surface->pending_referenced_surfaces().begin(), |
| 89 base::Bind(&CompositorFrameSinkSupport::DidReceiveCompositorFrameAck, | 97 surface->pending_referenced_surfaces().end()); |
| 90 weak_factory_.GetWeakPtr())); | 98 reference_tracker_.UpdateReferences(local_surface_id, referenced_surfaces); |
| 91 | 99 |
| 92 UpdateSurfaceReferences(last_surface_id, local_surface_id); | 100 UpdateSurfaceReferences(last_surface_id, local_surface_id); |
| 93 } else { | |
| 94 surface_factory_.SubmitCompositorFrame( | |
| 95 local_surface_id, std::move(frame), | |
| 96 base::Bind(&CompositorFrameSinkSupport::DidReceiveCompositorFrameAck, | |
| 97 weak_factory_.GetWeakPtr())); | |
| 98 } | 101 } |
| 99 | 102 |
| 100 if (display_) | 103 if (display_) |
| 101 display_->SetLocalSurfaceId(local_surface_id, device_scale_factor); | 104 display_->SetLocalSurfaceId(local_surface_id, device_scale_factor); |
| 102 } | 105 } |
| 103 | 106 |
| 104 void CompositorFrameSinkSupport::Require(const LocalSurfaceId& local_surface_id, | 107 void CompositorFrameSinkSupport::Require(const LocalSurfaceId& local_surface_id, |
| 105 const SurfaceSequence& sequence) { | 108 const SurfaceSequence& sequence) { |
| 106 surface_manager_->RequireSequence(SurfaceId(frame_sink_id_, local_surface_id), | 109 surface_manager_->RequireSequence(SurfaceId(frame_sink_id_, local_surface_id), |
| 107 sequence); | 110 sequence); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 247 return; | 250 return; |
| 248 | 251 |
| 249 added_frame_observer_ = needs_begin_frame_; | 252 added_frame_observer_ = needs_begin_frame_; |
| 250 if (needs_begin_frame_) | 253 if (needs_begin_frame_) |
| 251 begin_frame_source_->AddObserver(this); | 254 begin_frame_source_->AddObserver(this); |
| 252 else | 255 else |
| 253 begin_frame_source_->RemoveObserver(this); | 256 begin_frame_source_->RemoveObserver(this); |
| 254 } | 257 } |
| 255 | 258 |
| 256 } // namespace cc | 259 } // namespace cc |
| OLD | NEW |