Merge branch 'devel/master' into sandbox/dkdk/tizen
[platform/core/uifw/dali-adaptor.git] / dali / internal / system / windows / callback-manager-win.h
index 8222b8c..eed550f 100755 (executable)
@@ -2,7 +2,7 @@
 #define DALI_WIN_CALLBACK_MANAGER_H
 
 /*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 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.
  */
 
 // EXTERNAL INCLUDES
-#include <list>
+#include <set>
 
 // INTERNAL INCLUDES
 #include <dali/internal/system/common/callback-manager.h>
 
-
 namespace Dali
 {
 
@@ -55,34 +54,61 @@ public:
     /**
      * @copydoc CallbackManager::AddIdleCallback()
      */
-    virtual bool AddIdleCallback( CallbackBase* callback, bool hasReturnValue );
+    bool AddIdleCallback( CallbackBase* callback, bool hasReturnValue ) override;
 
     /**
      * @copydoc CallbackManager::RemoveIdleCallback()
      */
-    virtual void RemoveIdleCallback( CallbackBase* callback );
+    void RemoveIdleCallback( CallbackBase* callback ) override;
+
+    /**
+     * @copydoc CallbackManager::ProcessIdle()
+     */
+    bool ProcessIdle() override;
 
     /**
-       * @copydoc CallbackManager::AddIdleEntererCallback()
-       */
-       virtual bool AddIdleEntererCallback(CallbackBase* callback);
+     * @copydoc CallbackManager::ClearIdleCallbacks()
+     */
+    void ClearIdleCallbacks() override;
+
+    /**
+    * @brief Adds a @p callback to be run when entering an idle state.
+    * @note Must be called from the main thread only.
+    *
+    * A callback of the following type should be used:
+    * @code
+    *   bool MyFunction();
+    * @endcode
+    * This callback will be called repeatedly as long as it returns true. A return of 0 deletes this callback.
+    *
+    * @param[in] callback custom callback function.
+    *
+    * @return true on success
+    */
+    bool AddIdleEntererCallback( CallbackBase* callback ) override;
 
-       /**
-       * @copydoc CallbackManager::RemoveIdleEntererCallback()
-       */
-       virtual void RemoveIdleEntererCallback(CallbackBase* callback);
+    /**
+    * @brief Removes a previously added the idle enterer callback.
+    * @note Must be called from main thread only.
+    *
+    * Does nothing if the @p callback doesn't exist.
+    *
+    * @param[in] callback The callback to be removed.
+    */
+    void RemoveIdleEntererCallback( CallbackBase* callback ) override;
 
     /**
      * @copydoc CallbackManager::Start()
      */
-    virtual void Start();
+    void Start() override;
 
     /**
      * @copydoc CallbackManager::Stop()
      */
-    virtual void Stop();
+    void Stop() override;
 
 private:
+    std::set<CallbackBase*>        mCallbacks;
     bool                           mRunning;            ///< flag is set to true if when running
 };
 
@@ -92,4 +118,4 @@ private:
 
 } // namespace Dali
 
-#endif // __DALI_UV_CALLBACK_MANAGER_H__
+#endif // DALI_WIN_CALLBACK_MANAGER_H