summaryrefslogtreecommitdiffstats
path: root/xbmc/peripherals/EventPollHandle.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/peripherals/EventPollHandle.h')
-rw-r--r--xbmc/peripherals/EventPollHandle.h68
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