diff options
Diffstat (limited to 'xbmc/peripherals/EventPollHandle.h')
-rw-r--r-- | xbmc/peripherals/EventPollHandle.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/xbmc/peripherals/EventPollHandle.h b/xbmc/peripherals/EventPollHandle.h new file mode 100644 index 0000000..5d99e1e --- /dev/null +++ b/xbmc/peripherals/EventPollHandle.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2016-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +namespace PERIPHERALS +{ +class CEventPollHandle; + +/*! + * \brief Callback implemented by event scanner + */ +class IEventPollCallback +{ +public: + virtual ~IEventPollCallback(void) = default; + + virtual void Activate(CEventPollHandle& handle) = 0; + virtual void Deactivate(CEventPollHandle& handle) = 0; + virtual void HandleEvents(bool bWait) = 0; + virtual void Release(CEventPollHandle& handle) = 0; +}; + +/*! + * \brief Handle returned by the event scanner to control scan timing + * + * When held, this allows one to control the timing of when events are + * handled. + */ +class CEventPollHandle +{ +public: + /*! + * \brief Create an active polling handle + */ + CEventPollHandle(IEventPollCallback& callback); + + /*! + * \brief Handle is automatically released when this class is destructed + */ + ~CEventPollHandle(); + + /*! + * \brief Activate handle + */ + void Activate(); + + /*! + * \brief Deactivate handle + */ + void Deactivate(); + + /*! + * \brief Trigger a scan for events + * + * \param bWait If true, this blocks until all events are handled + */ + void HandleEvents(bool bWait); + +private: + IEventPollCallback& m_callback; +}; +} // namespace PERIPHERALS |