| OLD | NEW | 
|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/layers/layer_impl.h" | 5 #include "cc/layers/layer_impl.h" | 
| 6 | 6 | 
| 7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" | 
| 8 #include "base/debug/trace_event_argument.h" | 8 #include "base/debug/trace_event_argument.h" | 
| 9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" | 
| 10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 63       transform_is_invertible_(true), | 63       transform_is_invertible_(true), | 
| 64       is_container_for_fixed_position_layers_(false), | 64       is_container_for_fixed_position_layers_(false), | 
| 65       background_color_(0), | 65       background_color_(0), | 
| 66       opacity_(1.0), | 66       opacity_(1.0), | 
| 67       blend_mode_(SkXfermode::kSrcOver_Mode), | 67       blend_mode_(SkXfermode::kSrcOver_Mode), | 
| 68       num_descendants_that_draw_content_(0), | 68       num_descendants_that_draw_content_(0), | 
| 69       draw_depth_(0.f), | 69       draw_depth_(0.f), | 
| 70       needs_push_properties_(false), | 70       needs_push_properties_(false), | 
| 71       num_dependents_need_push_properties_(0), | 71       num_dependents_need_push_properties_(0), | 
| 72       sorting_context_id_(0), | 72       sorting_context_id_(0), | 
| 73       current_draw_mode_(DRAW_MODE_NONE) { | 73       current_draw_mode_(DRAW_MODE_NONE), | 
|  | 74       frame_timing_requests_dirty_(false) { | 
| 74   DCHECK_GT(layer_id_, 0); | 75   DCHECK_GT(layer_id_, 0); | 
| 75   DCHECK(layer_tree_impl_); | 76   DCHECK(layer_tree_impl_); | 
| 76   layer_tree_impl_->RegisterLayer(this); | 77   layer_tree_impl_->RegisterLayer(this); | 
| 77   AnimationRegistrar* registrar = layer_tree_impl_->animationRegistrar(); | 78   AnimationRegistrar* registrar = layer_tree_impl_->animationRegistrar(); | 
| 78   layer_animation_controller_ = | 79   layer_animation_controller_ = | 
| 79       registrar->GetAnimationControllerForId(layer_id_); | 80       registrar->GetAnimationControllerForId(layer_id_); | 
| 80   layer_animation_controller_->AddValueObserver(this); | 81   layer_animation_controller_->AddValueObserver(this); | 
| 81   if (IsActive()) { | 82   if (IsActive()) { | 
| 82     layer_animation_controller_->set_value_provider(this); | 83     layer_animation_controller_->set_value_provider(this); | 
| 83     layer_animation_controller_->set_layer_animation_delegate(this); | 84     layer_animation_controller_->set_layer_animation_delegate(this); | 
| (...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 600   // If the main thread commits multiple times before the impl thread actually | 601   // If the main thread commits multiple times before the impl thread actually | 
| 601   // draws, then damage tracking will become incorrect if we simply clobber the | 602   // draws, then damage tracking will become incorrect if we simply clobber the | 
| 602   // update_rect here. The LayerImpl's update_rect needs to accumulate (i.e. | 603   // update_rect here. The LayerImpl's update_rect needs to accumulate (i.e. | 
| 603   // union) any update changes that have occurred on the main thread. | 604   // union) any update changes that have occurred on the main thread. | 
| 604   update_rect_.Union(layer->update_rect()); | 605   update_rect_.Union(layer->update_rect()); | 
| 605   layer->SetUpdateRect(update_rect_); | 606   layer->SetUpdateRect(update_rect_); | 
| 606 | 607 | 
| 607   layer->SetStackingOrderChanged(stacking_order_changed_); | 608   layer->SetStackingOrderChanged(stacking_order_changed_); | 
| 608   layer->SetDebugInfo(debug_info_); | 609   layer->SetDebugInfo(debug_info_); | 
| 609 | 610 | 
|  | 611   if (frame_timing_requests_dirty_) { | 
|  | 612     layer->PassFrameTimingRequests(&frame_timing_requests_); | 
|  | 613     frame_timing_requests_dirty_ = false; | 
|  | 614   } | 
|  | 615 | 
| 610   // Reset any state that should be cleared for the next update. | 616   // Reset any state that should be cleared for the next update. | 
| 611   stacking_order_changed_ = false; | 617   stacking_order_changed_ = false; | 
| 612   update_rect_ = gfx::Rect(); | 618   update_rect_ = gfx::Rect(); | 
| 613   needs_push_properties_ = false; | 619   needs_push_properties_ = false; | 
| 614   num_dependents_need_push_properties_ = 0; | 620   num_dependents_need_push_properties_ = 0; | 
| 615 } | 621 } | 
| 616 | 622 | 
| 617 gfx::Vector2dF LayerImpl::FixedContainerSizeDelta() const { | 623 gfx::Vector2dF LayerImpl::FixedContainerSizeDelta() const { | 
| 618   if (!scroll_clip_layer_) | 624   if (!scroll_clip_layer_) | 
| 619     return gfx::Vector2dF(); | 625     return gfx::Vector2dF(); | 
| (...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1017   NoteLayerPropertyChangedForSubtree(); | 1023   NoteLayerPropertyChangedForSubtree(); | 
| 1018 } | 1024 } | 
| 1019 | 1025 | 
| 1020 void LayerImpl::Set3dSortingContextId(int id) { | 1026 void LayerImpl::Set3dSortingContextId(int id) { | 
| 1021   if (id == sorting_context_id_) | 1027   if (id == sorting_context_id_) | 
| 1022     return; | 1028     return; | 
| 1023   sorting_context_id_ = id; | 1029   sorting_context_id_ = id; | 
| 1024   NoteLayerPropertyChangedForSubtree(); | 1030   NoteLayerPropertyChangedForSubtree(); | 
| 1025 } | 1031 } | 
| 1026 | 1032 | 
|  | 1033 void LayerImpl::PassFrameTimingRequests( | 
|  | 1034     std::vector<FrameTimingRequest>* requests) { | 
|  | 1035   frame_timing_requests_.swap(*requests); | 
|  | 1036   frame_timing_requests_dirty_ = true; | 
|  | 1037   SetNeedsPushProperties(); | 
|  | 1038 } | 
|  | 1039 | 
| 1027 void LayerImpl::SetTransform(const gfx::Transform& transform) { | 1040 void LayerImpl::SetTransform(const gfx::Transform& transform) { | 
| 1028   if (transform_ == transform) | 1041   if (transform_ == transform) | 
| 1029     return; | 1042     return; | 
| 1030 | 1043 | 
| 1031   transform_ = transform; | 1044   transform_ = transform; | 
| 1032   transform_is_invertible_ = transform_.IsInvertible(); | 1045   transform_is_invertible_ = transform_.IsInvertible(); | 
| 1033   NoteLayerPropertyChangedForSubtree(); | 1046   NoteLayerPropertyChangedForSubtree(); | 
| 1034 } | 1047 } | 
| 1035 | 1048 | 
| 1036 void LayerImpl::SetTransformAndInvertibility(const gfx::Transform& transform, | 1049 void LayerImpl::SetTransformAndInvertibility(const gfx::Transform& transform, | 
| (...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1545           debug_info_value->GetAsDictionary(&dictionary_value); | 1558           debug_info_value->GetAsDictionary(&dictionary_value); | 
| 1546       DCHECK(converted_to_dictionary); | 1559       DCHECK(converted_to_dictionary); | 
| 1547       for (base::DictionaryValue::Iterator it(*dictionary_value); !it.IsAtEnd(); | 1560       for (base::DictionaryValue::Iterator it(*dictionary_value); !it.IsAtEnd(); | 
| 1548            it.Advance()) { | 1561            it.Advance()) { | 
| 1549         state->SetValue(it.key().data(), it.value().DeepCopy()); | 1562         state->SetValue(it.key().data(), it.value().DeepCopy()); | 
| 1550       } | 1563       } | 
| 1551     } else { | 1564     } else { | 
| 1552       NOTREACHED(); | 1565       NOTREACHED(); | 
| 1553     } | 1566     } | 
| 1554   } | 1567   } | 
|  | 1568 | 
|  | 1569   if (!frame_timing_requests_.empty()) { | 
|  | 1570     state->BeginArray("frame_timing_requests"); | 
|  | 1571     for (const auto& request : frame_timing_requests_) { | 
|  | 1572       state->BeginDictionary(); | 
|  | 1573       state->SetInteger("request_id", request.id()); | 
|  | 1574       MathUtil::AddToTracedValue("request_rect", request.rect(), state); | 
|  | 1575       state->EndDictionary(); | 
|  | 1576     } | 
|  | 1577     state->EndArray(); | 
|  | 1578   } | 
| 1555 } | 1579 } | 
| 1556 | 1580 | 
| 1557 bool LayerImpl::IsDrawnRenderSurfaceLayerListMember() const { | 1581 bool LayerImpl::IsDrawnRenderSurfaceLayerListMember() const { | 
| 1558   return draw_properties_.last_drawn_render_surface_layer_list_id == | 1582   return draw_properties_.last_drawn_render_surface_layer_list_id == | 
| 1559          layer_tree_impl_->current_render_surface_list_id(); | 1583          layer_tree_impl_->current_render_surface_list_id(); | 
| 1560 } | 1584 } | 
| 1561 | 1585 | 
| 1562 size_t LayerImpl::GPUMemoryUsageInBytes() const { return 0; } | 1586 size_t LayerImpl::GPUMemoryUsageInBytes() const { return 0; } | 
| 1563 | 1587 | 
| 1564 void LayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) { | 1588 void LayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) { | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
| 1584   SetNeedsPushProperties(); | 1608   SetNeedsPushProperties(); | 
| 1585   layer_tree_impl()->set_needs_update_draw_properties(); | 1609   layer_tree_impl()->set_needs_update_draw_properties(); | 
| 1586   if (should_have_render_surface) { | 1610   if (should_have_render_surface) { | 
| 1587     render_surface_ = make_scoped_ptr(new RenderSurfaceImpl(this)); | 1611     render_surface_ = make_scoped_ptr(new RenderSurfaceImpl(this)); | 
| 1588     return; | 1612     return; | 
| 1589   } | 1613   } | 
| 1590   render_surface_.reset(); | 1614   render_surface_.reset(); | 
| 1591 } | 1615 } | 
| 1592 | 1616 | 
| 1593 }  // namespace cc | 1617 }  // namespace cc | 
| OLD | NEW | 
|---|