| 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/blimp/compositor_state_deserializer.h" | 5 #include "cc/blimp/compositor_state_deserializer.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "cc/blimp/client_picture_cache.h" | 9 #include "cc/blimp/client_picture_cache.h" |
| 10 #include "cc/blimp/compositor_state_deserializer_client.h" | |
| 11 #include "cc/blimp/deserialized_content_layer_client.h" | 10 #include "cc/blimp/deserialized_content_layer_client.h" |
| 12 #include "cc/blimp/layer_factory.h" | 11 #include "cc/blimp/layer_factory.h" |
| 13 #include "cc/blimp/picture_data_conversions.h" | 12 #include "cc/blimp/picture_data_conversions.h" |
| 14 #include "cc/input/layer_selection_bound.h" | 13 #include "cc/input/layer_selection_bound.h" |
| 15 #include "cc/layers/layer.h" | 14 #include "cc/layers/layer.h" |
| 16 #include "cc/layers/picture_layer.h" | 15 #include "cc/layers/picture_layer.h" |
| 17 #include "cc/layers/solid_color_scrollbar_layer.h" | 16 #include "cc/layers/solid_color_scrollbar_layer.h" |
| 18 #include "cc/proto/cc_conversions.h" | 17 #include "cc/proto/cc_conversions.h" |
| 18 #include "cc/proto/client_state_update.pb.h" |
| 19 #include "cc/proto/gfx_conversions.h" | 19 #include "cc/proto/gfx_conversions.h" |
| 20 #include "cc/proto/layer_tree_host.pb.h" | 20 #include "cc/proto/layer_tree_host.pb.h" |
| 21 #include "cc/proto/skia_conversions.h" | 21 #include "cc/proto/skia_conversions.h" |
| 22 #include "cc/trees/layer_tree_host.h" | 22 #include "cc/trees/layer_tree_host_common.h" |
| 23 #include "cc/trees/layer_tree_host_in_process.h" |
| 23 | 24 |
| 24 namespace cc { | 25 namespace cc { |
| 25 namespace { | 26 namespace { |
| 26 | 27 |
| 27 class DefaultLayerFactory : public LayerFactory { | 28 class DefaultLayerFactory : public LayerFactory { |
| 28 public: | 29 public: |
| 29 DefaultLayerFactory() = default; | 30 DefaultLayerFactory() = default; |
| 30 ~DefaultLayerFactory() override = default; | 31 ~DefaultLayerFactory() override = default; |
| 31 | 32 |
| 32 // LayerFactory implementation. | 33 // LayerFactory implementation. |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 CompositorStateDeserializer::LayerData::LayerData() = default; | 66 CompositorStateDeserializer::LayerData::LayerData() = default; |
| 66 | 67 |
| 67 CompositorStateDeserializer::LayerData::~LayerData() = default; | 68 CompositorStateDeserializer::LayerData::~LayerData() = default; |
| 68 | 69 |
| 69 CompositorStateDeserializer::LayerData::LayerData(LayerData&& other) = default; | 70 CompositorStateDeserializer::LayerData::LayerData(LayerData&& other) = default; |
| 70 | 71 |
| 71 CompositorStateDeserializer::LayerData& CompositorStateDeserializer::LayerData:: | 72 CompositorStateDeserializer::LayerData& CompositorStateDeserializer::LayerData:: |
| 72 operator=(LayerData&& other) = default; | 73 operator=(LayerData&& other) = default; |
| 73 | 74 |
| 74 CompositorStateDeserializer::CompositorStateDeserializer( | 75 CompositorStateDeserializer::CompositorStateDeserializer( |
| 75 LayerTreeHost* layer_tree_host, | 76 LayerTreeHostInProcess* layer_tree_host, |
| 76 std::unique_ptr<ClientPictureCache> client_picture_cache, | 77 std::unique_ptr<ClientPictureCache> client_picture_cache, |
| 77 const ScrollCallback& scroll_callback, | |
| 78 CompositorStateDeserializerClient* client) | 78 CompositorStateDeserializerClient* client) |
| 79 : layer_factory_(base::MakeUnique<DefaultLayerFactory>()), | 79 : layer_factory_(base::MakeUnique<DefaultLayerFactory>()), |
| 80 layer_tree_host_(layer_tree_host), | 80 layer_tree_host_(layer_tree_host), |
| 81 client_picture_cache_(std::move(client_picture_cache)), | 81 client_picture_cache_(std::move(client_picture_cache)), |
| 82 scroll_callback_(scroll_callback), | 82 client_(client), |
| 83 client_(client) { | 83 weak_factory_(this) { |
| 84 DCHECK(layer_tree_host_); | 84 DCHECK(layer_tree_host_); |
| 85 DCHECK(client_); | 85 DCHECK(client_); |
| 86 } | 86 } |
| 87 | 87 |
| 88 CompositorStateDeserializer::~CompositorStateDeserializer() = default; | 88 CompositorStateDeserializer::~CompositorStateDeserializer() = default; |
| 89 | 89 |
| 90 Layer* CompositorStateDeserializer::GetLayerForEngineId( | 90 Layer* CompositorStateDeserializer::GetLayerForEngineId( |
| 91 int engine_layer_id) const { | 91 int engine_layer_id) const { |
| 92 EngineIdToLayerMap::const_iterator layer_it = | 92 EngineIdToLayerMap::const_iterator layer_it = |
| 93 engine_id_to_layer_.find(engine_layer_id); | 93 engine_id_to_layer_.find(engine_layer_id); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 114 | 114 |
| 115 // The deserialization is finished, so now clear the cache. | 115 // The deserialization is finished, so now clear the cache. |
| 116 client_picture_cache_->Flush(); | 116 client_picture_cache_->Flush(); |
| 117 } | 117 } |
| 118 | 118 |
| 119 void CompositorStateDeserializer::SetLayerFactoryForTesting( | 119 void CompositorStateDeserializer::SetLayerFactoryForTesting( |
| 120 std::unique_ptr<LayerFactory> layer_factory) { | 120 std::unique_ptr<LayerFactory> layer_factory) { |
| 121 layer_factory_ = std::move(layer_factory); | 121 layer_factory_ = std::move(layer_factory); |
| 122 } | 122 } |
| 123 | 123 |
| 124 void CompositorStateDeserializer::ApplyViewportDeltas( |
| 125 const gfx::Vector2dF& inner_delta, |
| 126 const gfx::Vector2dF& outer_delta, |
| 127 const gfx::Vector2dF& elastic_overscroll_delta, |
| 128 float page_scale, |
| 129 float top_controls_delta) { |
| 130 DCHECK_EQ(top_controls_delta, 0.0f); |
| 131 DCHECK(elastic_overscroll_delta == gfx::Vector2dF()); |
| 132 DCHECK(outer_delta == gfx::Vector2dF()); |
| 133 |
| 134 // The inner_delta can be ignored here, since we receive that in the scroll |
| 135 // callback on the layer itself. |
| 136 if (page_scale != 1.0f) { |
| 137 LayerTree* layer_tree = layer_tree_host_->GetLayerTree(); |
| 138 synced_page_scale_.UpdateDeltaFromImplThread( |
| 139 layer_tree->page_scale_factor()); |
| 140 layer_tree->SetPageScaleFactorAndLimits( |
| 141 synced_page_scale_.EngineMain(), layer_tree->min_page_scale_factor(), |
| 142 layer_tree->max_page_scale_factor()); |
| 143 client_->DidUpdateLocalState(); |
| 144 } |
| 145 } |
| 146 |
| 147 void CompositorStateDeserializer::PullClientStateUpdate( |
| 148 proto::ClientStateUpdate* client_state_update) { |
| 149 for (auto& layer_it : engine_id_to_layer_) { |
| 150 int engine_layer_id = layer_it.first; |
| 151 auto& synced_scroll_offset = layer_it.second.synced_scroll_offset; |
| 152 gfx::ScrollOffset scroll_offset_delta = |
| 153 synced_scroll_offset.PullDeltaForEngineUpdate(); |
| 154 gfx::Vector2dF scroll_delta_vector = |
| 155 gfx::ScrollOffsetToVector2dF(scroll_offset_delta); |
| 156 |
| 157 if (scroll_delta_vector.IsZero()) { |
| 158 continue; |
| 159 } |
| 160 |
| 161 proto::ScrollUpdate* scroll_update = |
| 162 client_state_update->add_scroll_updates(); |
| 163 scroll_update->set_layer_id(engine_layer_id); |
| 164 Vector2dFToProto(scroll_delta_vector, |
| 165 scroll_update->mutable_scroll_delta()); |
| 166 } |
| 167 |
| 168 float page_scale_delta = synced_page_scale_.PullDeltaForEngineUpdate(); |
| 169 if (page_scale_delta != 1.0f) { |
| 170 client_state_update->set_page_scale_delta(page_scale_delta); |
| 171 } |
| 172 } |
| 173 |
| 174 void CompositorStateDeserializer::DidApplyStateUpdatesOnEngine() { |
| 175 for (auto& layer_it : engine_id_to_layer_) { |
| 176 Layer* layer = layer_it.second.layer.get(); |
| 177 auto& synced_scroll_offset = layer_it.second.synced_scroll_offset; |
| 178 |
| 179 synced_scroll_offset.DidApplySentDeltaOnEngine(); |
| 180 layer->SetScrollOffset(synced_scroll_offset.EngineMain()); |
| 181 } |
| 182 |
| 183 synced_page_scale_.DidApplySentDeltaOnEngine(); |
| 184 LayerTree* layer_tree = layer_tree_host_->GetLayerTree(); |
| 185 layer_tree->SetPageScaleFactorAndLimits(synced_page_scale_.EngineMain(), |
| 186 layer_tree->min_page_scale_factor(), |
| 187 layer_tree->max_page_scale_factor()); |
| 188 } |
| 189 |
| 190 void CompositorStateDeserializer::SendUnappliedDeltasToLayerTreeHost() { |
| 191 std::unique_ptr<ReflectedMainFrameState> reflected_main_frame_state = |
| 192 base::MakeUnique<ReflectedMainFrameState>(); |
| 193 |
| 194 for (auto& layer_it : engine_id_to_layer_) { |
| 195 Layer* layer = layer_it.second.layer.get(); |
| 196 auto& synced_scroll_offset = layer_it.second.synced_scroll_offset; |
| 197 |
| 198 gfx::ScrollOffset scroll_offset_delta = |
| 199 synced_scroll_offset.DeltaNotAppliedOnEngine(); |
| 200 gfx::Vector2dF scroll_delta_vector = |
| 201 gfx::ScrollOffsetToVector2dF(scroll_offset_delta); |
| 202 if (scroll_delta_vector.IsZero()) |
| 203 continue; |
| 204 |
| 205 ReflectedMainFrameState::ScrollUpdate scroll_update; |
| 206 scroll_update.layer_id = layer->id(); |
| 207 scroll_update.scroll_delta = scroll_delta_vector; |
| 208 reflected_main_frame_state->scrolls.push_back(scroll_update); |
| 209 } |
| 210 |
| 211 reflected_main_frame_state->page_scale_delta = |
| 212 synced_page_scale_.DeltaNotAppliedOnEngine(); |
| 213 layer_tree_host_->SetReflectedMainFrameState( |
| 214 std::move(reflected_main_frame_state)); |
| 215 } |
| 216 |
| 124 void CompositorStateDeserializer::SychronizeLayerTreeState( | 217 void CompositorStateDeserializer::SychronizeLayerTreeState( |
| 125 const proto::LayerTree& layer_tree_proto) { | 218 const proto::LayerTree& layer_tree_proto) { |
| 126 LayerTree* layer_tree = layer_tree_host_->GetLayerTree(); | 219 LayerTree* layer_tree = layer_tree_host_->GetLayerTree(); |
| 127 | 220 |
| 128 // Synchronize the tree hierarchy first. | 221 // Synchronize the tree hierarchy first. |
| 129 // TODO(khushalsagar): Don't do this if the hierarchy didn't change. See | 222 // TODO(khushalsagar): Don't do this if the hierarchy didn't change. See |
| 130 // crbug.com/605170. | 223 // crbug.com/605170. |
| 131 EngineIdToLayerMap new_engine_id_to_layer; | 224 EngineIdToLayerMap new_engine_id_to_layer; |
| 132 ScrollbarLayerToScrollLayerId scrollbar_layer_to_scroll_layer; | 225 ScrollbarLayerToScrollLayerId scrollbar_layer_to_scroll_layer; |
| 133 if (layer_tree_proto.has_root_layer()) { | 226 if (layer_tree_proto.has_root_layer()) { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 GetLayer(layer_tree_proto.inner_viewport_scroll_layer_id()), | 259 GetLayer(layer_tree_proto.inner_viewport_scroll_layer_id()), |
| 167 GetLayer(layer_tree_proto.outer_viewport_scroll_layer_id())); | 260 GetLayer(layer_tree_proto.outer_viewport_scroll_layer_id())); |
| 168 | 261 |
| 169 layer_tree->SetDeviceScaleFactor(layer_tree_proto.device_scale_factor()); | 262 layer_tree->SetDeviceScaleFactor(layer_tree_proto.device_scale_factor()); |
| 170 layer_tree->SetPaintedDeviceScaleFactor( | 263 layer_tree->SetPaintedDeviceScaleFactor( |
| 171 layer_tree_proto.painted_device_scale_factor()); | 264 layer_tree_proto.painted_device_scale_factor()); |
| 172 | 265 |
| 173 float min_page_scale_factor = layer_tree_proto.min_page_scale_factor(); | 266 float min_page_scale_factor = layer_tree_proto.min_page_scale_factor(); |
| 174 float max_page_scale_factor = layer_tree_proto.max_page_scale_factor(); | 267 float max_page_scale_factor = layer_tree_proto.max_page_scale_factor(); |
| 175 float page_scale_factor = layer_tree_proto.page_scale_factor(); | 268 float page_scale_factor = layer_tree_proto.page_scale_factor(); |
| 176 if (client_->ShouldRetainClientPageScale(page_scale_factor)) | 269 synced_page_scale_.PushFromEngineMainThread(page_scale_factor); |
| 177 page_scale_factor = layer_tree->page_scale_factor(); | 270 layer_tree->SetPageScaleFactorAndLimits(synced_page_scale_.EngineMain(), |
| 178 layer_tree->SetPageScaleFactorAndLimits( | 271 min_page_scale_factor, |
| 179 page_scale_factor, min_page_scale_factor, max_page_scale_factor); | 272 max_page_scale_factor); |
| 180 | 273 |
| 181 layer_tree->set_background_color(layer_tree_proto.background_color()); | 274 layer_tree->set_background_color(layer_tree_proto.background_color()); |
| 182 layer_tree->set_has_transparent_background( | 275 layer_tree->set_has_transparent_background( |
| 183 layer_tree_proto.has_transparent_background()); | 276 layer_tree_proto.has_transparent_background()); |
| 184 | 277 |
| 185 LayerSelection selection; | 278 LayerSelection selection; |
| 186 LayerSelectionFromProtobuf(&selection, layer_tree_proto.selection()); | 279 LayerSelectionFromProtobuf(&selection, layer_tree_proto.selection()); |
| 187 layer_tree->RegisterSelection(selection); | 280 layer_tree->RegisterSelection(selection); |
| 188 layer_tree->SetViewportSize( | 281 layer_tree->SetViewportSize( |
| 189 ProtoToSize(layer_tree_proto.device_viewport_size())); | 282 ProtoToSize(layer_tree_proto.device_viewport_size())); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 layer->SetPosition(ProtoToPointF(base.position())); | 314 layer->SetPosition(ProtoToPointF(base.position())); |
| 222 layer->SetTransform(ProtoToTransform(base.transform())); | 315 layer->SetTransform(ProtoToTransform(base.transform())); |
| 223 layer->SetTransformOrigin(ProtoToPoint3F(base.transform_origin())); | 316 layer->SetTransformOrigin(ProtoToPoint3F(base.transform_origin())); |
| 224 layer->SetIsDrawable(base.is_drawable()); | 317 layer->SetIsDrawable(base.is_drawable()); |
| 225 layer->SetDoubleSided(base.double_sided()); | 318 layer->SetDoubleSided(base.double_sided()); |
| 226 layer->SetShouldFlattenTransform(base.should_flatten_transform()); | 319 layer->SetShouldFlattenTransform(base.should_flatten_transform()); |
| 227 layer->Set3dSortingContextId(base.sorting_context_id()); | 320 layer->Set3dSortingContextId(base.sorting_context_id()); |
| 228 layer->SetUseParentBackfaceVisibility(base.use_parent_backface_visibility()); | 321 layer->SetUseParentBackfaceVisibility(base.use_parent_backface_visibility()); |
| 229 layer->SetBackgroundColor(base.background_color()); | 322 layer->SetBackgroundColor(base.background_color()); |
| 230 | 323 |
| 231 gfx::ScrollOffset scroll_offset = ProtoToScrollOffset(base.scroll_offset()); | 324 gfx::ScrollOffset engine_scroll_offset = |
| 232 if (client_->ShouldRetainClientScroll(engine_layer_id, scroll_offset)) | 325 ProtoToScrollOffset(base.scroll_offset()); |
| 233 scroll_offset = layer->scroll_offset(); | 326 SyncedRemoteScrollOffset& synced_scroll_offset = |
| 234 layer->SetScrollOffset(scroll_offset); | 327 GetLayerData(engine_layer_id)->synced_scroll_offset; |
| 328 synced_scroll_offset.PushFromEngineMainThread(engine_scroll_offset); |
| 329 layer->SetScrollOffset(synced_scroll_offset.EngineMain()); |
| 235 | 330 |
| 236 layer->SetScrollClipLayerId( | 331 layer->SetScrollClipLayerId( |
| 237 GetClientIdFromEngineId(base.scroll_clip_layer_id())); | 332 GetClientIdFromEngineId(base.scroll_clip_layer_id())); |
| 238 layer->SetUserScrollable(base.user_scrollable_horizontal(), | 333 layer->SetUserScrollable(base.user_scrollable_horizontal(), |
| 239 base.user_scrollable_vertical()); | 334 base.user_scrollable_vertical()); |
| 240 | 335 |
| 241 if (layer->main_thread_scrolling_reasons()) { | 336 if (layer->main_thread_scrolling_reasons()) { |
| 242 layer->ClearMainThreadScrollingReasons( | 337 layer->ClearMainThreadScrollingReasons( |
| 243 layer->main_thread_scrolling_reasons()); | 338 layer->main_thread_scrolling_reasons()); |
| 244 } | 339 } |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 mask_layer_node, new_layer_map, scrollbar_layer_to_scroll_layer); | 422 mask_layer_node, new_layer_map, scrollbar_layer_to_scroll_layer); |
| 328 layer->SetMaskLayer(mask_layer.get()); | 423 layer->SetMaskLayer(mask_layer.get()); |
| 329 SynchronizeLayerHierarchyRecursive(mask_layer.get(), mask_layer_node, | 424 SynchronizeLayerHierarchyRecursive(mask_layer.get(), mask_layer_node, |
| 330 new_layer_map, | 425 new_layer_map, |
| 331 scrollbar_layer_to_scroll_layer); | 426 scrollbar_layer_to_scroll_layer); |
| 332 } else { | 427 } else { |
| 333 layer->SetMaskLayer(nullptr); | 428 layer->SetMaskLayer(nullptr); |
| 334 } | 429 } |
| 335 | 430 |
| 336 // Scroll callback. | 431 // Scroll callback. |
| 337 layer->set_did_scroll_callback(base::Bind(scroll_callback_, layer_node.id())); | 432 layer->set_did_scroll_callback( |
| 433 base::Bind(&CompositorStateDeserializer::LayerScrolled, |
| 434 weak_factory_.GetWeakPtr(), layer_node.id())); |
| 338 } | 435 } |
| 339 | 436 |
| 340 scoped_refptr<Layer> CompositorStateDeserializer::GetLayerAndAddToNewMap( | 437 scoped_refptr<Layer> CompositorStateDeserializer::GetLayerAndAddToNewMap( |
| 341 const proto::LayerNode& layer_node, | 438 const proto::LayerNode& layer_node, |
| 342 EngineIdToLayerMap* new_layer_map, | 439 EngineIdToLayerMap* new_layer_map, |
| 343 ScrollbarLayerToScrollLayerId* scrollbar_layer_to_scroll_layer) { | 440 ScrollbarLayerToScrollLayerId* scrollbar_layer_to_scroll_layer) { |
| 344 DCHECK(new_layer_map->find(layer_node.id()) == new_layer_map->end()) | 441 DCHECK(new_layer_map->find(layer_node.id()) == new_layer_map->end()) |
| 345 << "A LayerNode should have been de-serialized only once"; | 442 << "A LayerNode should have been de-serialized only once"; |
| 346 | 443 |
| 347 scoped_refptr<Layer> layer; | 444 scoped_refptr<Layer> layer; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 } break; | 499 } break; |
| 403 case proto::LayerNode::HEADS_UP_DISPLAY_LAYER: | 500 case proto::LayerNode::HEADS_UP_DISPLAY_LAYER: |
| 404 // TODO(khushalsagar): Remove this from proto. | 501 // TODO(khushalsagar): Remove this from proto. |
| 405 NOTREACHED(); | 502 NOTREACHED(); |
| 406 } | 503 } |
| 407 | 504 |
| 408 layer = layer_data.layer; | 505 layer = layer_data.layer; |
| 409 return layer; | 506 return layer; |
| 410 } | 507 } |
| 411 | 508 |
| 509 void CompositorStateDeserializer::LayerScrolled(int engine_layer_id) { |
| 510 LayerData* layer_data = GetLayerData(engine_layer_id); |
| 511 Layer* layer = layer_data->layer.get(); |
| 512 SyncedRemoteScrollOffset& synced_scroll_offset = |
| 513 layer_data->synced_scroll_offset; |
| 514 synced_scroll_offset.UpdateDeltaFromImplThread(layer->scroll_offset()); |
| 515 layer->SetScrollOffset(synced_scroll_offset.EngineMain()); |
| 516 client_->DidUpdateLocalState(); |
| 517 } |
| 518 |
| 412 int CompositorStateDeserializer::GetClientIdFromEngineId( | 519 int CompositorStateDeserializer::GetClientIdFromEngineId( |
| 413 int engine_layer_id) const { | 520 int engine_layer_id) const { |
| 414 Layer* layer = GetLayerForEngineId(engine_layer_id); | 521 Layer* layer = GetLayerForEngineId(engine_layer_id); |
| 415 return layer ? layer->id() : Layer::LayerIdLabels::INVALID_ID; | 522 return layer ? layer->id() : Layer::LayerIdLabels::INVALID_ID; |
| 416 } | 523 } |
| 417 | 524 |
| 418 scoped_refptr<Layer> CompositorStateDeserializer::GetLayer( | 525 scoped_refptr<Layer> CompositorStateDeserializer::GetLayer( |
| 419 int engine_layer_id) const { | 526 int engine_layer_id) const { |
| 420 EngineIdToLayerMap::const_iterator layer_it = | 527 EngineIdToLayerMap::const_iterator layer_it = |
| 421 engine_id_to_layer_.find(engine_layer_id); | 528 engine_id_to_layer_.find(engine_layer_id); |
| 422 return layer_it != engine_id_to_layer_.end() ? layer_it->second.layer | 529 return layer_it != engine_id_to_layer_.end() ? layer_it->second.layer |
| 423 : nullptr; | 530 : nullptr; |
| 424 } | 531 } |
| 425 | 532 |
| 426 DeserializedContentLayerClient* | 533 DeserializedContentLayerClient* |
| 427 CompositorStateDeserializer::GetContentLayerClient(int engine_layer_id) const { | 534 CompositorStateDeserializer::GetContentLayerClient(int engine_layer_id) const { |
| 428 EngineIdToLayerMap::const_iterator layer_it = | 535 EngineIdToLayerMap::const_iterator layer_it = |
| 429 engine_id_to_layer_.find(engine_layer_id); | 536 engine_id_to_layer_.find(engine_layer_id); |
| 430 return layer_it != engine_id_to_layer_.end() | 537 return layer_it != engine_id_to_layer_.end() |
| 431 ? layer_it->second.content_layer_client.get() | 538 ? layer_it->second.content_layer_client.get() |
| 432 : nullptr; | 539 : nullptr; |
| 433 } | 540 } |
| 434 | 541 |
| 542 CompositorStateDeserializer::LayerData* |
| 543 CompositorStateDeserializer::GetLayerData(int engine_layer_id) { |
| 544 EngineIdToLayerMap::iterator layer_it = |
| 545 engine_id_to_layer_.find(engine_layer_id); |
| 546 return layer_it != engine_id_to_layer_.end() ? &layer_it->second : nullptr; |
| 547 } |
| 548 |
| 435 } // namespace cc | 549 } // namespace cc |
| OLD | NEW |