Chromium Code Reviews| Index: cc/animation_registrar.h |
| diff --git a/cc/animation_registrar.h b/cc/animation_registrar.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..2b59dba2662348feba5d768fd401bc671bc6cba6 |
| --- /dev/null |
| +++ b/cc/animation_registrar.h |
| @@ -0,0 +1,58 @@ |
| +// Copyright 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CC_ANIMATION_REGISTRAR_H_ |
| +#define CC_ANIMATION_REGISTRAR_H_ |
| + |
| +#include "base/hash_tables.h" |
| +#include "cc/cc_export.h" |
| + |
| +namespace cc { |
| + class LayerAnimationController; |
|
jamesr
2012/12/05 19:19:29
no indent here
|
| +} // namespace cc |
| + |
| +#if defined(COMPILER_GCC) |
| +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 { |
| + |
| +class CC_EXPORT AnimationRegistrar { |
| + public: |
| + typedef base::hash_set<LayerAnimationController*> AnimationControllerSet; |
| + |
| + enum ThreadName { MainThread, CompositorThread }; |
| + |
| + // Registers the given animation controller as active. An active animation |
| + // controller is one that has a running animation that needs to be ticked. |
| + static void Activate(LayerAnimationController*, ThreadName); |
| + |
| + // Unregisters the given animation controller. When this happens, the |
| + // animation controller will no longer be ticked (since it's not active). It |
| + // is not an error to call this function with a deactivated controller. |
| + static void Deactivate(LayerAnimationController*, ThreadName); |
| + |
| + // Registers the given animation controller as alive. |
| + static void Register(LayerAnimationController*, ThreadName); |
| + |
| + // Unregisters the given animation controller as alive. |
| + static void Unregister(LayerAnimationController*, ThreadName); |
| + |
| + // Gets the list of active animation controllers for the given thread. |
| + static const AnimationControllerSet& GetActiveControllers(ThreadName); |
| + |
| + // Gets the list of all animation controllers for the given thread. |
| + static const AnimationControllerSet& GetAllControllers(ThreadName); |
| +}; |
| + |
| +} // namespace cc |
| + |
| +#endif // CC_ANIMATION_REGISTRAR_H_ |