X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=dali-toolkit%2Finternal%2Fvisuals%2Fanimated-vector-image%2Fvector-animation-manager.h;h=c52b800f6c3e278e7352eca9d5c4434014da400f;hb=77cfccf524aa92099d786a8ee13528b597593d48;hp=510c07e6cc891b7ec3a67954ea0fa948896ea6c9;hpb=debd4ef5b35507bac4579dfbb8983b743872c70b;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-manager.h b/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-manager.h index 510c07e..c52b800 100644 --- a/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-manager.h +++ b/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-manager.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_INTERNAL_VECTOR_ANIMATION_MANAGER_H /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,30 +19,31 @@ */ // EXTERNAL INCLUDES -#include -#include #include +#include +#include #include // INTERNAL INCLUDES namespace Dali { - namespace Toolkit { - namespace Internal { - class VectorAnimationThread; /** * @brief Vector animation manager */ -class VectorAnimationManager: public Integration::Processor +class VectorAnimationManager : public Integration::Processor { public: + struct LifecycleObserver + { + virtual void VectorAnimationManagerDestroyed() = 0; + }; /** * @brief Constructor. @@ -55,6 +56,18 @@ public: ~VectorAnimationManager() override; /** + * Add a lifecycle observer + * @param[in] observer The object watching this one + */ + void AddObserver(LifecycleObserver& observer); + + /** + * Remove a lifecycle observer + * @param[in] observer The object watching this one + */ + void RemoveObserver(LifecycleObserver& observer); + + /** * Get the vector animation thread. * @return A raw pointer pointing to the vector animation thread. */ @@ -66,35 +79,33 @@ public: * @param callback The callback to register * @note Ownership of the callback is passed onto this class. */ - void RegisterEventCallback( CallbackBase* callback ); + void RegisterEventCallback(CallbackBase* callback); /** * @brief Unregister a previously registered callback * * @param callback The callback to unregister */ - void UnregisterEventCallback( CallbackBase* callback ); + void UnregisterEventCallback(CallbackBase* callback); protected: // Implementation of Processor - /** * @copydoc Dali::Integration::Processor::Process() */ void Process() override; private: - // Undefined - VectorAnimationManager( const VectorAnimationManager& manager ) = delete; + VectorAnimationManager(const VectorAnimationManager& manager) = delete; // Undefined - VectorAnimationManager& operator=( const VectorAnimationManager& manager ) = delete; + VectorAnimationManager& operator=(const VectorAnimationManager& manager) = delete; private: - - std::vector< CallbackBase* > mEventCallbacks; - std::unique_ptr< VectorAnimationThread > mVectorAnimationThread; - bool mProcessorRegistered; + std::vector mEventCallbacks; + std::vector mLifecycleObservers; + std::unique_ptr mVectorAnimationThread; + bool mProcessorRegistered; }; } // namespace Internal