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