#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
{
/**
* @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
};
} // namespace Dali
-#endif // __DALI_UV_CALLBACK_MANAGER_H__
+#endif // DALI_WIN_CALLBACK_MANAGER_H