Deskflow 1.22.0.197
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 "deskflow/IScreen.h"
12#include "mt/Thread.h"
13#include "platform/EiScreen.h"
14
15#include <libei.h>
16#include <memory>
17#include <mutex>
18#include <queue>
19
20namespace deskflow {
21
24{
25public:
26 EiEventQueueBuffer(const EiScreen *screen, ei *ei, IEventQueue *events);
27 ~EiEventQueueBuffer() override;
28
29 // IEventQueueBuffer overrides
30 void init() override
31 {
32 // do nothing
33 }
34 void waitForEvent(double timeout_in_ms) override;
35 Type getEvent(Event &event, uint32_t &dataID) override;
36 bool addEvent(uint32_t dataID) override;
37 bool isEmpty() const override;
38 EventQueueTimer *newTimer(double duration, bool oneShot) const override;
39 void deleteTimer(EventQueueTimer *) const override;
40
41private:
42 ei *m_ei;
43 IEventQueue *m_events;
44 std::queue<std::pair<bool, uint32_t>> m_queue;
45 int m_pipeWrite;
46 int m_pipeRead;
47
48 mutable std::mutex m_mutex;
49};
50
51} // namespace deskflow
Definition SimpleEventQueueBuffer.cpp:13
Event.
Definition Event.h:27
Event queue buffer interface.
Definition IEventQueueBuffer.h:21
Type
Definition IEventQueueBuffer.h:24
Event queue interface.
Definition IEventQueue.h:32
EiEventQueueBuffer(const EiScreen *screen, ei *ei, IEventQueue *events)
Definition EiEventQueueBuffer.cpp:28
Type getEvent(Event &event, uint32_t &dataID) override
Get the next event.
Definition EiEventQueueBuffer.cpp:93
~EiEventQueueBuffer() override
Definition EiEventQueueBuffer.cpp:41
void waitForEvent(double timeout_in_ms) override
Block waiting for an event.
Definition EiEventQueueBuffer.cpp:48
void deleteTimer(EventQueueTimer *) const override
Destroy a timer object.
Definition EiEventQueueBuffer.cpp:147
bool addEvent(uint32_t dataID) override
Post an event.
Definition EiEventQueueBuffer.cpp:123
EventQueueTimer * newTimer(double duration, bool oneShot) const override
Create a timer object.
Definition EiEventQueueBuffer.cpp:142
void init() override
Initialize.
Definition EiEventQueueBuffer.h:30
bool isEmpty() const override
Check if event queue buffer is empty.
Definition EiEventQueueBuffer.cpp:135
Implementation of IPlatformScreen for X11.
Definition EiScreen.h:33
Definition EventTypes.h:11