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

Side by Side Diff: cc/layer.cc

Issue 11830056: Enable accelerated animations for orphaned layers (Closed) Base URL: http://git.chromium.org/chromium/src.git@MakeLayerTreeHostAnimateLayersTakeWallClockTime
Patch Set: Created 7 years, 11 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
OLDNEW
1 // Copyright 2010 The Chromium Authors. All rights reserved. 1 // Copyright 2010 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.h" 5 #include "cc/layer.h"
6 6
7 #include "cc/animation.h" 7 #include "cc/animation.h"
8 #include "cc/animation_events.h" 8 #include "cc/animation_events.h"
9 #include "cc/layer_animation_controller.h" 9 #include "cc/layer_animation_controller.h"
10 #include "cc/layer_impl.h" 10 #include "cc/layer_impl.h"
(...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 // also being run on the impl thread, there is no need to request a commit t o push 739 // also being run on the impl thread, there is no need to request a commit t o push
740 // this value over, so set this value directly rather than calling setTransf orm. 740 // this value over, so set this value directly rather than calling setTransf orm.
741 m_transform = transform; 741 m_transform = transform;
742 } 742 }
743 743
744 bool Layer::IsActive() const 744 bool Layer::IsActive() const
745 { 745 {
746 return true; 746 return true;
747 } 747 }
748 748
749 bool Layer::IsOrphaned() const
750 {
751 return !m_layerTreeHost;
752 }
753
749 bool Layer::addAnimation(scoped_ptr <Animation> animation) 754 bool Layer::addAnimation(scoped_ptr <Animation> animation)
750 { 755 {
751 // WebCore currently assumes that accelerated animations will start soon 756 if (!m_layerAnimationController->animationRegistrar())
752 // after the animation is added. However we cannot guarantee that if we do
753 // not have a layerTreeHost that will setNeedsCommit().
754 // Unfortunately, the fix below to guarantee correctness causes performance
755 // regressions on Android, since Android has shipped for a long time
756 // with all animations accelerated. For this reason, we will live with
757 // this bug only on Android until the bug is fixed.
758 // http://crbug.com/129683
759 #if !defined(OS_ANDROID)
760 if (!m_layerTreeHost)
761 return false; 757 return false;
762 758
763 if (!m_layerTreeHost->settings().acceleratedAnimationEnabled)
764 return false;
765 #endif
766
767 m_layerAnimationController->addAnimation(animation.Pass()); 759 m_layerAnimationController->addAnimation(animation.Pass());
768 setNeedsCommit(); 760 setNeedsCommit();
769 return true; 761 return true;
770 } 762 }
771 763
772 void Layer::pauseAnimation(int animationId, double timeOffset) 764 void Layer::pauseAnimation(int animationId, double timeOffset)
773 { 765 {
774 m_layerAnimationController->pauseAnimation(animationId, timeOffset); 766 m_layerAnimationController->pauseAnimation(animationId, timeOffset);
775 setNeedsCommit(); 767 setNeedsCommit();
776 } 768 }
(...skipping 26 matching lines...) Expand all
803 addLayerAnimationEventObserver(m_layerAnimationController.get()); 795 addLayerAnimationEventObserver(m_layerAnimationController.get());
804 setNeedsCommit(); 796 setNeedsCommit();
805 } 797 }
806 798
807 scoped_refptr<LayerAnimationController> Layer::releaseLayerAnimationController() 799 scoped_refptr<LayerAnimationController> Layer::releaseLayerAnimationController()
808 { 800 {
809 m_layerAnimationController->removeObserver(this); 801 m_layerAnimationController->removeObserver(this);
810 scoped_refptr<LayerAnimationController> toReturn = m_layerAnimationControlle r; 802 scoped_refptr<LayerAnimationController> toReturn = m_layerAnimationControlle r;
811 m_layerAnimationController = LayerAnimationController::create(id()); 803 m_layerAnimationController = LayerAnimationController::create(id());
812 m_layerAnimationController->addObserver(this); 804 m_layerAnimationController->addObserver(this);
805 m_layerAnimationController->setAnimationRegistrar(toReturn->animationRegistr ar());
813 return toReturn; 806 return toReturn;
814 } 807 }
815 808
816 bool Layer::hasActiveAnimation() const 809 bool Layer::hasActiveAnimation() const
817 { 810 {
818 return m_layerAnimationController->hasActiveAnimation(); 811 return m_layerAnimationController->hasActiveAnimation();
819 } 812 }
820 813
821 void Layer::notifyAnimationStarted(const AnimationEvent& event, double wallClock Time) 814 void Layer::notifyAnimationStarted(const AnimationEvent& event, double wallClock Time)
822 { 815 {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 { 847 {
855 return 0; 848 return 0;
856 } 849 }
857 850
858 void sortLayers(std::vector<scoped_refptr<Layer> >::iterator, std::vector<scoped _refptr<Layer> >::iterator, void*) 851 void sortLayers(std::vector<scoped_refptr<Layer> >::iterator, std::vector<scoped _refptr<Layer> >::iterator, void*)
859 { 852 {
860 // Currently we don't use z-order to decide what to paint, so there's no nee d to actually sort Layers. 853 // Currently we don't use z-order to decide what to paint, so there's no nee d to actually sort Layers.
861 } 854 }
862 855
863 } // namespace cc 856 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layer.h ('k') | cc/layer_animation_controller.h » ('j') | cc/layer_animation_controller.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698