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

Side by Side Diff: cc/layer_impl.cc

Issue 12413020: Do not push properties that are animated on impl only. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 9 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
« no previous file with comments | « cc/layer_impl.h ('k') | cc/layer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/layer_impl.h" 5 #include "cc/layer_impl.h"
6 6
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "cc/animation_registrar.h" 10 #include "cc/animation_registrar.h"
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 layer->SetDrawsContent(DrawsContent()); 326 layer->SetDrawsContent(DrawsContent());
327 layer->SetFilters(filters()); 327 layer->SetFilters(filters());
328 layer->SetFilter(filter()); 328 layer->SetFilter(filter());
329 layer->SetBackgroundFilters(background_filters()); 329 layer->SetBackgroundFilters(background_filters());
330 layer->SetMasksToBounds(masks_to_bounds_); 330 layer->SetMasksToBounds(masks_to_bounds_);
331 layer->SetShouldScrollOnMainThread(should_scroll_on_main_thread_); 331 layer->SetShouldScrollOnMainThread(should_scroll_on_main_thread_);
332 layer->SetHaveWheelEventHandlers(have_wheel_event_handlers_); 332 layer->SetHaveWheelEventHandlers(have_wheel_event_handlers_);
333 layer->SetNonFastScrollableRegion(non_fast_scrollable_region_); 333 layer->SetNonFastScrollableRegion(non_fast_scrollable_region_);
334 layer->SetTouchEventHandlerRegion(touch_event_handler_region_); 334 layer->SetTouchEventHandlerRegion(touch_event_handler_region_);
335 layer->SetContentsOpaque(contents_opaque_); 335 layer->SetContentsOpaque(contents_opaque_);
336 if (!OpacityIsAnimating()) 336 layer->SetOpacity(opacity_);
337 layer->SetOpacity(opacity_);
338 layer->SetPosition(position_); 337 layer->SetPosition(position_);
339 layer->SetIsContainerForFixedPositionLayers( 338 layer->SetIsContainerForFixedPositionLayers(
340 is_container_for_fixed_position_layers_); 339 is_container_for_fixed_position_layers_);
341 layer->SetFixedToContainerLayer(fixed_to_container_layer_); 340 layer->SetFixedToContainerLayer(fixed_to_container_layer_);
342 layer->SetPreserves3d(preserves_3d()); 341 layer->SetPreserves3d(preserves_3d());
343 layer->SetUseParentBackfaceVisibility(use_parent_backface_visibility_); 342 layer->SetUseParentBackfaceVisibility(use_parent_backface_visibility_);
344 layer->SetSublayerTransform(sublayer_transform_); 343 layer->SetSublayerTransform(sublayer_transform_);
345 if (!TransformIsAnimating()) 344 layer->SetTransform(transform_);
346 layer->SetTransform(transform_);
347 345
348 layer->SetScrollable(scrollable_); 346 layer->SetScrollable(scrollable_);
349 layer->SetScrollOffset(scroll_offset_); 347 layer->SetScrollOffset(scroll_offset_);
350 layer->SetMaxScrollOffset(max_scroll_offset_); 348 layer->SetMaxScrollOffset(max_scroll_offset_);
351 349
352 // If the main thread commits multiple times before the impl thread actually 350 // If the main thread commits multiple times before the impl thread actually
353 // draws, then damage tracking will become incorrect if we simply clobber the 351 // draws, then damage tracking will become incorrect if we simply clobber the
354 // updateRect here. The LayerImpl's updateRect needs to accumulate (i.e. 352 // updateRect here. The LayerImpl's updateRect needs to accumulate (i.e.
355 // union) any update changes that have occurred on the main thread. 353 // union) any update changes that have occurred on the main thread.
356 update_rect_.Union(layer->update_rect()); 354 update_rect_.Union(layer->update_rect());
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 return; 708 return;
711 709
712 opacity_ = opacity; 710 opacity_ = opacity;
713 NoteLayerSurfacePropertyChanged(); 711 NoteLayerSurfacePropertyChanged();
714 } 712 }
715 713
716 bool LayerImpl::OpacityIsAnimating() const { 714 bool LayerImpl::OpacityIsAnimating() const {
717 return layer_animation_controller_->IsAnimatingProperty(Animation::Opacity); 715 return layer_animation_controller_->IsAnimatingProperty(Animation::Opacity);
718 } 716 }
719 717
718 bool LayerImpl::OpacityIsAnimatingOnImplOnly() const {
719 Animation* opacity_animation =
720 layer_animation_controller_->GetAnimation(Animation::Opacity);
721 return opacity_animation && opacity_animation->is_impl_only();
722 }
723
720 void LayerImpl::SetPosition(gfx::PointF position) { 724 void LayerImpl::SetPosition(gfx::PointF position) {
721 if (position_ == position) 725 if (position_ == position)
722 return; 726 return;
723 727
724 position_ = position; 728 position_ = position;
725 NoteLayerPropertyChangedForSubtree(); 729 NoteLayerPropertyChangedForSubtree();
726 } 730 }
727 731
728 void LayerImpl::SetPreserves3d(bool preserves3_d) { 732 void LayerImpl::SetPreserves3d(bool preserves3_d) {
729 if (preserves_3d_ == preserves3_d) 733 if (preserves_3d_ == preserves3_d)
(...skipping 18 matching lines...) Expand all
748 return; 752 return;
749 753
750 transform_ = transform; 754 transform_ = transform;
751 NoteLayerSurfacePropertyChanged(); 755 NoteLayerSurfacePropertyChanged();
752 } 756 }
753 757
754 bool LayerImpl::TransformIsAnimating() const { 758 bool LayerImpl::TransformIsAnimating() const {
755 return layer_animation_controller_->IsAnimatingProperty(Animation::Transform); 759 return layer_animation_controller_->IsAnimatingProperty(Animation::Transform);
756 } 760 }
757 761
762 bool LayerImpl::TransformIsAnimatingOnImplOnly() const {
763 Animation* transform_animation =
764 layer_animation_controller_->GetAnimation(Animation::Transform);
765 return transform_animation && transform_animation->is_impl_only();
766 }
767
758 void LayerImpl::SetContentBounds(gfx::Size content_bounds) { 768 void LayerImpl::SetContentBounds(gfx::Size content_bounds) {
759 if (this->content_bounds() == content_bounds) 769 if (this->content_bounds() == content_bounds)
760 return; 770 return;
761 771
762 draw_properties_.content_bounds = content_bounds; 772 draw_properties_.content_bounds = content_bounds;
763 NoteLayerPropertyChanged(); 773 NoteLayerPropertyChanged();
764 } 774 }
765 775
766 void LayerImpl::SetContentsScale(float contents_scale_x, 776 void LayerImpl::SetContentsScale(float contents_scale_x,
767 float contents_scale_y) { 777 float contents_scale_y) {
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 952
943 } 953 }
944 954
945 scoped_ptr<base::Value> LayerImpl::AsValue() const { 955 scoped_ptr<base::Value> LayerImpl::AsValue() const {
946 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue()); 956 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
947 AsValueInto(state.get()); 957 AsValueInto(state.get());
948 return state.PassAs<base::Value>(); 958 return state.PassAs<base::Value>();
949 } 959 }
950 960
951 } // namespace cc 961 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layer_impl.h ('k') | cc/layer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698