Deskflow 1.24.0.365
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
EiEventQueueBuffer.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2024 Symless Ltd.
4 * SPDX-FileCopyrightText: (C) 2022 Red Hat, Inc.
5 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
6 */
7
8#pragma once
9
11#include "platform/EiScreen.h"
12
13#include <libei.h>
14#include <mutex>
15#include <queue>
16
17namespace deskflow {
18
21{
22public:
23 EiEventQueueBuffer(ei *ei, IEventQueue *events);
24 ~EiEventQueueBuffer() override;
25
26 // IEventQueueBuffer overrides
27 void init() override
28 {
29 // do nothing
30 }
31 void waitForEvent(double msTimeout) override;
32 Type getEvent(Event &event, uint32_t &dataID) override;
33 bool addEvent(uint32_t dataID) override;
34 bool isEmpty() const override;
35 EventQueueTimer *newTimer(double duration, bool oneShot) const override;
36 void deleteTimer(EventQueueTimer *) const override;
37
38private:
39 ei *m_ei;
40 IEventQueue *m_events;
41 std::queue<std::pair<bool, uint32_t>> m_queue;
42 int m_pipeWrite;
43 int m_pipeRead;
44
45 mutable std::mutex m_mutex;
46};
47
48} // namespace deskflow
Definition EventQueueTimer.h:12
Event.
Definition Event.h:29
Event queue buffer interface.
Definition IEventQueueBuffer.h:22
Type
Definition IEventQueueBuffer.h:26
Event queue interface.
Definition IEventQueue.h:29
Type getEvent(Event &event, uint32_t &dataID) override
Get the next event.
Definition EiEventQueueBuffer.cpp:87
~EiEventQueueBuffer() override
Definition EiEventQueueBuffer.cpp:35
void deleteTimer(EventQueueTimer *) const override
Destroy a timer object.
Definition EiEventQueueBuffer.cpp:141
void waitForEvent(double msTimeout) override
Block waiting for an event.
Definition EiEventQueueBuffer.cpp:42
bool addEvent(uint32_t dataID) override
Post an event.
Definition EiEventQueueBuffer.cpp:117
EiEventQueueBuffer(ei *ei, IEventQueue *events)
Definition EiEventQueueBuffer.cpp:24
EventQueueTimer * newTimer(double duration, bool oneShot) const override
Create a timer object.
Definition EiEventQueueBuffer.cpp:136
void init() override
Initialize.
Definition EiEventQueueBuffer.h:27
bool isEmpty() const override
Check if event queue buffer is empty.
Definition EiEventQueueBuffer.cpp:129
Definition EventTypes.h:11