Index: cc/layer_tree_host.h |
diff --git a/cc/layer_tree_host.h b/cc/layer_tree_host.h |
index 4423082fd3d2780db453dcc52669448dad1f27b4..21af798f4334bb7e76ee7b4f5711d838329fb8f5 100644 |
--- a/cc/layer_tree_host.h |
+++ b/cc/layer_tree_host.h |
@@ -14,6 +14,7 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/time.h" |
#include "cc/animation_events.h" |
+#include "cc/animation_registrar.h" |
#include "cc/cc_export.h" |
#include "cc/layer_tree_host_client.h" |
#include "cc/layer_tree_host_common.h" |
@@ -36,6 +37,15 @@ struct hash<WebKit::WebGraphicsContext3D*> { |
} |
}; |
} // namespace BASE_HASH_NAMESPACE |
+ |
+namespace BASE_HASH_NAMESPACE { |
+template<> |
+struct hash<cc::LayerAnimationController*> { |
+ size_t operator()(cc::LayerAnimationController* ptr) const { |
+ return hash<size_t>()(reinterpret_cast<size_t>(ptr)); |
+ } |
+}; |
+} // namespace BASE_HASH_NAMESPACE |
#endif // COMPILER |
namespace cc { |
@@ -113,7 +123,8 @@ struct CC_EXPORT RendererCapabilities { |
int maxTextureSize; |
}; |
-class CC_EXPORT LayerTreeHost : public RateLimiterClient { |
+class CC_EXPORT LayerTreeHost : public RateLimiterClient, |
+ public AnimationRegistrar { |
public: |
static scoped_ptr<LayerTreeHost> create(LayerTreeHostClient*, const LayerTreeSettings&, scoped_ptr<Thread> implThread); |
virtual ~LayerTreeHost(); |
@@ -190,7 +201,6 @@ public: |
bool commitRequested() const; |
void setAnimationEvents(scoped_ptr<AnimationEventsVector>, base::Time wallClockTime); |
- virtual void didAddAnimation(); |
Layer* rootLayer() { return m_rootLayer.get(); } |
const Layer* rootLayer() const { return m_rootLayer.get(); } |
@@ -248,8 +258,15 @@ protected: |
bool initialize(scoped_ptr<Thread> implThread); |
bool initializeForTesting(scoped_ptr<Proxy> proxyForTesting); |
+ // AnimationRegistar implementation. |
+ virtual void DidActivateAnimationController(LayerAnimationController*) OVERRIDE; |
+ virtual void DidDeactivateAnimationController(LayerAnimationController*) OVERRIDE; |
+ virtual void RegisterAnimationController(LayerAnimationController*) OVERRIDE; |
+ virtual void UnregisterAnimationController(LayerAnimationController*) OVERRIDE; |
+ |
private: |
typedef std::vector<scoped_refptr<Layer> > LayerList; |
+ typedef base::hash_set<LayerAnimationController*> AnimationControllerSet; |
bool initializeProxy(scoped_ptr<Proxy> proxy); |
void initializeRenderer(); |
@@ -271,7 +288,6 @@ private: |
void setAnimationEventsRecursive(const AnimationEventsVector&, Layer*, base::Time wallClockTime); |
bool m_animating; |
- bool m_needsAnimateLayers; |
bool m_needsFullTreeSync; |
base::CancelableClosure m_prepaintCallback; |
@@ -318,6 +334,12 @@ private: |
static bool s_needsFilterContext; |
+ AnimationControllerSet m_activeAnimationControllers; |
+ |
+#if !defined(NDEBUG) |
+ AnimationControllerSet m_allAnimationControllers; |
+#endif |
+ |
DISALLOW_COPY_AND_ASSIGN(LayerTreeHost); |
}; |